


El lenguaje Ladder es el que utilizamos en las práctica para programar el PLC de la estación1 después de realizar el diagrama Grafcet.
En el método de Montecarlo se procede a la inversa,
es decir, dados unos números aleatorios y una distribución, se trata de obtener, no el colectivo real (eso sería imposible) sino una simulación del mismo o "colectivo" virtual.
A veces no se desea obtener el colectivo sino alguna propiedad suya determinada por algunos elementos. En este caso, con el método de Montecarlo obtendremos tales elementos y a partir de ellos calcularemos dicha propiedad.
3.- GPSS
Lenguaje GPSS: lenguaje de comandos antiguo en el que no vamos a profundizar.
Estamentos de control
Bloques básicos
4.- AnyLogic: es un programa nuevo
Statecharts: cartas de estado que sirven para desarrollar sistemas estocásticos. Es un lenguaje gráfico para programar los eventos que son complicados de programar en Java o en C++. Es un sistema de estados y transiciones asociados. Cada vez que hay un evento se cambia de estado. Los elementos principales de estas Statecharts son:
- Estados
- Transiciones
- Acción: es un accesorio. Tanto los estados como las transiciones tienen acciones
Los símbolos son:
Enterprise Library: librería para crear programas de empresa
Agent Based (ejemplo: Predator pray): simulación por medio de agentes
· 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
JAVA es un lenguaje de programación orientado a objetos, desarrollado a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.Con respecto a la memoria, su gestión no es un problema ya que ésta es gestionada por el propio lenguaje y no por el programador.El lenguaje Java se creó con cinco objetivos principales:
- Debería usar el paradigma de la programación orientada a objetos.
- Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
- Debería incluir por defecto soporte para trabajo en red.
- Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
- Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.
Archivo Fuente ----------> Bytecode ----------> Código ordenador
:
:
:
Interprete (JVM)
Archivo fuente: creado mediante el editor "jEdit" --> clase1.java
para pasar a bytecodes --> Javac (compilador)
para pasar de bytecodes a código fuente --> gcj
para pasar de bytecodes a interprete --> Java
Las librerías (o packages) de Java son una colección de utilidades y funciones, ordenadas por su aplicación, que sirven para facilitar las tareas de programación. Las más básicas son:
-java.applet
-java.awt
-java.beans
-java.io
-java.lang
-java.math
-java.net
-java.sql
-java.text
-java.util
En las siguientes clases utilizaremos el programa J-Edit:
1-Instalar
2-Instalar Plugin.console
3-Escibir codigo fuente
4-Compilar codigo fuente: Plugins > Console > Compile Current Buffer5-Ejecutar codigo fuente: Plugins>Console>Run Current Buffer