Hola Nebire.
A lo que me refiero es que tengo una maquina industrial en la que hago productos fìsicos. Es decir, tengo una maquina que me produce bolsas para empacar, bolsas comunes y corrientes como en la que se empacan unas galletas. Cada bolsa es una referencia, y cada montaje es los cambios que le tengo que hacer a mi maquina para proucir una bolsa diferente a la que estaba produciendo.
El programa que necesito desarrollar es para ayudarme en la programaciòn de la producción de mi planta, pues estoy siendo muy ineficiente al no programar una secuencia de referencias que sean lo suficientemente similares entre si para que no tenga que realizar muchos cambios en el montaje.
Me explique bien? Ojala que si lo haya hecho y que me puedan ayudar.
Gracias.
Hola... ahora ya te has explicado mejor.
Mira para eso que necesitas existe lo que se llaman clases (class), pero te recomiendo que uses el Vb.net que es más claro y conciso para esos propósitos.
Te explico un poco por encima.
Una clase es (para que lo entiendas) un modelo básico de un elemento cualquiera, lo que podríamos llamar una plantilla básica.
A diferencia de una plantilla física (que sólo te vale para una forma determinada, la que adquiere la plantilla), en programación se lo hace lo más abstracta (genérica) posible a fin de que pueda adaptarse a muy diferenctes casos.
supongamos que voy a fabricar tipos de pastas, tengo una maquinaria que admite programas .exe (que no tienen que ser específicamente programados) de windows... y lo interpreta corectamente (que es compatible con el software).
entonces (abreviadamente) se crearía una clase básica de pasta (la clase es lo que tu de alguna manera has dado en llamar referencia). La clase más básica de pasata incluye las siguientes partes que iremos bosquejando:
ingredientes que lo forman
forma y tamaño
presentación de lotes y embalado
pasar los datos a la máquina
crear diferentes pastas partiendo de la básica abrirlas y guardarlas
Todo esto es lo que vamos a hacer con nuestra clase. Empezamos por crear un proyecto nuevo, este proyecto lo llamaremos FabricaPastas, automáticamente aparece un formulario que será con el que luego que creemos nuestro molde de pasata básica, utilizaremos para crear más pastas, guardarlas e introducir los datos de creació de una pasta a las máquinas.
sin embargo antes de hacer nada en el formulario, vamos a crear nuestra pasta básica, el molde simple pero completo....elegimos añadir un nuevo tipo de elemento al proyecto, de los componentes que se ofrecen elegimos uno que se llama clase (con Vb.net generar clases es más sencillo y rápido y es más claro la sensación de objeto que con VB6). menú proyecto: add Class
hoy te explico la parte de los ingredientes, como sería esto en la clase, como se crean y para qué... y crear esta primera pasta, otro día te explicaré como crear pastas diferentes a partir de esta básica y así en sucesivos días otras partes más...
Es lógico que las pastas se compongan de diferentes ingredientes, como queremos que nuestra plantilla sirva para que las maquinarias puedan hacer muy diferentes tipos de pastas, cuanto más amplio sea el repertorio de ingredientes, más facilidad habrá para esa diversidad, no obstante en este ejemplo vamos a considerar un número limitado de los mismos para que no sea excesivamente extenso, pero lo suficientemente largo para que los distribuyamos en categorías.
pego el código que de momento generaríamos y luego te comento cada parte, qués qué hace, para qué sirve...
Public Class Pasta
Public Structure info
Public producto As String
Public cantidad As Integer
End Structure
Public Enum otrosEdulcorantes
miel = 1
aspartame = 2
End Enum
Public Enum ingredientesSecretos
canela = 1
anis = 1
piña = 2
End Enum
Public Enum otrosIngredientes
limon = 1
naranja = 2
calabaza = 3
ajo = 4
tomate = 5
cocacola = 6
chococalte = 7
coco = 8
nataMontada = 9
caramelo = 10
End Enum
Public Enum ingredientesBase
agua = 1
aceite = 2
sal = 3
azúcar = 4
harina = 5
alcohol = 6
End Enum
Public Enum formas
irregular = 0
redonda = 1
oval = 2
triangular = 3
rectangular = 4
estrellada= 5
End Enum
Public Structure ingredientes
Public base() As info
Public edulcorantes() As info
Public secretos() As info
Public otros() As info
End Structure
Public Structure dimensiones
Public largo As Short 'en milímetro
Public ancho As Short 'en milimetro
Public grueso As Short 'en milimetros
Public superficie As Short 'en cm cuadrados
End Structure
Public Structure empaquetado
Public tamañoCaja As dimensiones
Public cantidad As Short
Public precio As Short
Public peso As Short
End Structure
Public numIngredientes As Short
Public partesTotales As Integer
Public forma As formas
Public tamaño As dimensiones
'genera una pasta básica
Public Sub New()
End Sub
End Class
Lo primero que hemos creado es una estructura, un estructura es en si una miniclase, puede contener funciones y rutinas al iigual que una clase, pero con la salvedad de que las estructuras se quedan en memoria, por eso no hay que abusar de ellas, las clases se cargan y descargan de memoria según se soliciten..
La estructura sirve para contener en un mismo recipiente diversas cosas pero que las vemos como un conjunto, así a la primera estructura la hemos llamado info (el nombre no es muy ilustrativo, pero se lo he dado para que veas que un nombre no muy ilustrativo a la larga puede dar problemas. (nota las estructuras es lo que en VB6 se llamaban type, pero aquí tienen mayor funcionalidad).
Esta estructura tiene 2 elementos, producto y cantidad producto es una cadena de texto y cantidad una cifra (integer en vb.net es una cifra muy grande, en VB6 sólo llegaba hasta 32767) Esta estrucutra la usaremos para relacionar cada ingrediente utilizado, si por ejemplo usamos el ingrediente(4), entonces la forma ingrediente(4).producto nos indica el nombre del mismo y la forma ingrediente(4).cantidad el peso en que inteviene para hacer una única pasta.
Luego hemos creado enumeraciones. Las enumeraciones son básicamente listados, es una forma de que si doy a un usuario a elegir una cifra no elija una que no se correponda con lo que tenemos disponible... imagina que vas a un bar y pides una cerveza negra de marga Groug de medio litro, te dirán , lo sentimos tenemos un problema, no tenemos esa cerveza... un modo de solucionarlo (en parte) consiste en exponer una carta con las cervezas disponibles, si no figura en la carta, no la tienen, si figura, está (en el bar esto es sólo teoría pero en nuestro caso es distinto). Además una enumeración es una forma doble de llamar a algo, puedo llamar inditintamente al azúcar por su nombre o utilizar el valor que le representa el 4, es el valor que nos ha dado la gana darle, al igual que en la carta de cervezas uno podría decir dame una 'guau 5 estrellas' o decir dame la número 8...
Como ves hemos creado varias enumeraciones, una para los ingredientes base estos queremos que entren siemopre en cada pasta, con mayor o menos medida, digamos que son los productos imprescindibles, la pasta más básica. Hemos creado uno de edulcorantes, miel, aspartame... podríamos haber incluído allí el azú car pero suponemos que al menos en una pasta siempre debe haber algún adulcorante, más adelante podremos definir si lo deseamos si al introducir un edulcorante dejamos fuera (sustituye completamente) al azúcar o no.
Hemos puesto también una enumeración de ingredientes secretos.... como mera cursiosidad de que la personalización puede levarse a extremos.
..y hemos añadido también una enumeración para la forma de las pastas creadas, puede tener cualquiera de las formas allí indicadas (en otra ocasión ya le indicaremos a la máquina como se hace cada forma, ahora baste saber que esto es lo que queremos para nuestra pasta. Las enumeraciones las puedes aumentar tanto como quieras y puedes cambiarlas de sitio, sólo hay 2 premisas a la hora de programarlo, debes indicarlas en orden correlativo, pueden indicar cifras negativas también... y no puedes repetir el nombre a ninguna (ni la cifra).
En tu caso deberías hacer una enumeración de los diferentes tipos de bolsas, si las bolsas están divididas en grupos y luego cada grupo tieien su lista, entonces cada grupo lo describes como una estruuctura y creas una enumeración por cada grupo ... ahora vamos a esa parte ...
analizando la estructura de ingredientes:
Public Structure ingredientes
Public base() As info
Public edulcorantes() As info
Public secretos() As info
Public otros() As info
End Structure
verás que es como te he sugerido para tus grupos de bolsas...
cada uno de los miembros de esta estrucutura en una matriz de elementos del tipo info es decir que finalmente nuestro azúcar no es ingrediente(4).producto como sería si solo hubieramos concebido los productos básicos, como esta clase es un modelo base es deseable que lo formen más elementos para que teneiendo una gran variedad, no sirva sólo para 2 o 3 pastas sino una variedad mucho mayor. entonces nuestra pasta básica aún no ha sido creada, tenemos los elementos pero aún hay que crearla, esto se hace desde la rutina llamada new(), en vb.net esto se llama constructor. Un constructor es la base y el origen de creación de un objeto cualquier clase creada necesita ser construída. Si no tienen un new, el sistema asigna uno automáticamente pero no hace nada, aquí es donde le diremos que es una pasta básica.
Nota que vamos a dividir o separar lo que es diseñar una pasta nueva de fabricarla, es decir serán 2 actos distintos, eso quiere decir que al invocar el new() lo que hacemos es diseñar , luiego para fabricar la pasta crearemos otras funciones. Crearemos incluso una función que al tiempo que se diseña también se crea, es decir reune las partes, las prepara, las mezcla, las lleva al horno, las saca y las empaqueta. Pero esta la haremos al final, priemro hay que definir parte a parte del mecanismo.
Falta por hoy explicar 3 cosas más:
1 el constructor lo hemos dejado vacío, en otra ocasión lo completamos para que veas como será nuestra pasta básica.
2 la estructura ingredientes será una parte fundamental de esa rutina
3 hay otros elementos fuera de las estructuras y de las clases:
Public numIngredientes As Short
Public partesTotales As Integer
Public forma As formas
Public tamaño As dimensiones
Cada uno de estos se puede interpretar como una estructura de un único elemento, o bien al revés las estructuras son como estos pero compuestos de varios elementos. Estos básicamente los usaremos para informar, y para usar en otras partes que nos las pedirán. numIngredientes, contará el número de ingredientes que se usarán para cada pasta, esto será necesario saberlo para que cuando la máquina se ponga a reunir los ingredientes y mezclarlos, sepa cuantos nos hacen falta cuantas veces tendrá que volcar el recipiente que lo conteiene y batir, cuantas veces tendrá que pesar, etc... por tanto será necesario crear una función que descubra y calcule dada una pasta en concreto cuanto ingredientes tiene. De igual modo partes totales nos informa de las proporciones en que entra cada ingrediente, si le pidiéramos fabricar 1234 pastas necesitarémos saber cuanto azúcar, agua , huevos o sal necesitáremos..., si se dispone de una máquina que pesa y toma la cantidad necesaria necesitaremos pasarle este dato para cada ingrediente, para que la fórmula sea la misma sea cual sea el número de pastas a fabricar, la forma es capricho y estética, de igual modo el tamaño de cada pastadecide cuanto volumen se precisa para completar x piezas, si una pasta tiene el tamaño de una caja de cerillas no empleará el mismo material que si tiene el tamaño de la palma de la mano, entonces 1000 piezas de diferente tamaño tienen diferentes cantidades...
por hoy vale....