- Sistemas Continuos: el sistema evoluciona de forma continua (ej: Temperatura, no hay saltos.)
· Ecuaciones diferenciales
· Sistemas lineales
· Sistemas no lineales
- Sistemas de eventos (sucesos) discretos. Van a influir en el comportamiento del sistema y suceden en un periodo corto de tiempo.
· Procesos estocásticos
· Modelos de colas
· Sistemas reactivos
Programas de Simulación: sirven para implementar el modelo matemático o computacional de un sistema y obtener resultados gráficos y animaciones de su comportamiento.
Paradigmas de simulación:
· Dynamic Systems
· System Dinamics (usado en biología, economía, banca)
· Discrete Event
· Agent Based
Solución numérica de una EDO (Ecuación Diferencial Ordinaria) con Analogyc
Problema del Valor Inicial:
dx/dt = f(t,x)
x(0) = x0
Con un ejemplo:
dx/dt = -3x
x(0) =2
La solución sería: x(t) = 2·e^-3t
Esta ecuación diferencial la podemos resolver con Anylogic gracias al Diagrama de Forrester de la siguiente manera, dando la solución numérica:
Donde el símbolo de la válvula representa flow o grifo y el cuadrado representa un depósito o stock.
Esta forma de escribir las ecuaciones deferenciales simplifica su resolución.
PROGRAMACIÓN ORIENTADA AL OBJETO (POO)
La programación orientada a objetos o POO es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.
Para comprender las partes de un esquema de POO, podemos pensar en una figura de plastilina. La figura de plastilina es el elemento principal con unas características como el color, y puede tener funcionalidades asociadas como servir de decoración. Volviendo al esquema POO, la figura de plastilina sería el objeto, las propiedades serían el color o la plastilina usada, y los métodos serían las funcionalidades asociadas. El molde que se ha usado para hacer la figura puede ser otro objeto, que utilizará objetos plastilina.
- Clases en POO: Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase.
- Propiedades o atributos: Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.
- Métodos: Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.
- Objetos: Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee.
- Estado interno en un objeto: Las propiedades de un objeto toman valores. Por ejemplo, cuando tenemos una figura de plastilina la propiedad color tomará un valor en concreto, como por ejemplo rojo o azul. El valor concreto de una propiedad de un objeto se llama estado. Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto: figura.color=rojo siendo figura el objeto.
- Mensaje en un objeto: Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando queremos que una figura de plastilina se mueva sería parecido al caso de estado: figura.ponteAandar() donde pondríamos los parámetros dentro de ( ).
- Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.
- Herencia: Sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo.
- Polimorfismo: Sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos.
- Abstracción: denota las características de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
- Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
- Modularidad: propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la Modularidad de diversas formas.
- Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
- Recolección de basura: o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.
Por lo tanto y resumiendo, la programación orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución. Un objeto es una abstracción de algún hecho o ente del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Los componentes de un objeto serían: atributos, identidad, relaciones y métodos. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases
No hay comentarios:
Publicar un comentario