1. Clases.
1.1. Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacion es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
1.1.1. A estos atributos se les llama también variables de instancia, mientras que a los servicios se les llama comunes.
1.1.1.1. No se debe confundir el concepto de clase con el de Tipo Abtracto de Datos. La diferencia está, según autores, en que los TAD no soportan herencia, mientras que el concepto se clase sí.
1.2. Para definir una clase: Class SampleClass. End Class
1.3. Clase denominadas estructuradas. Structure SampleStructure. End Structure.
1.4. Ejemplo de clase: la clase bicicleta ya tiene los atributos que son el color, la velocidad, la marcha y los métodos que son Avanzar, Cambiar de marcha y Frenar. Con esta clase, este molde, esta plantilla, se puede utilizar para crear el objeto "Mi Bicicleta".
1.4.1. Para las personas, un objeto suele ser algo de los siguiente: Algo tangible o visible. Algo que puede ser comprendido mentalmente. Algo a lo que va dirigido e, pensamiento o la accion. El estado de un objeto representa todas las propiedades, normalmente estáticas, del objeto además de los valores actuales, normalmente dinámicos, de cada una de estas propiedades.
1.4.1.1. Puede haber tipos distintos de operaciones sobre un objeto: Modificadoras. Selectoras. Iteradoras. Constructoras. Destructoras.
1.4.2. Pero también se puede usar para crear con esa misma clase, otro objeto que podemos llamar "Tu Bicicleta" que tendrá sus propios atributos y métodos como color rojo, velocidad cero y marcha uno.
2. Objetos
2.1. Instancia en una base. (Datos( (metodos). Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema ( del programa).
2.2. Ejemplo de un objeto: una bicicleta seria el objeto,este tiene una serie de atributos como el color, la velocidad y la marcha, en este caso la bicicleta es de color negro, el estado en el que se encuentra el objeto, su velocidad es de cero ya que esta detenida y esta colocada la marcha número dos porque era la último que se usó y así quedo.
2.2.1. También se puede expresar su comportamiento, es decir los métodos de ese Objdto como Avanzar, Cambiar de marcha y Frenar.
3. Características
3.1. Encapsulacion. Se admite como encapsulacion a la posibilidad de agrupar bajo una misma entidad los datos y las funciones, o métodos, que trabajam con esos datos.
3.1.1. Algunos autores llaman a esto Abstracción. Los mecanismo clasicos más utilizados son: Procedimientos. Modulos. TAD's. Objetos junto vom el paso de mensajes, herencia y polimorfismo.
3.2. Herencia. Se utiliza en la construcción de nuevas clases a partir de otras clases ya existentes, de manera que las nuevas clases así creadas incorporan la estructura y el comportamiento de la clase de la que heredan.
3.2.1. La herencia tiene una serie de beneficios para el programador: Polimorfismo. Compartir codigo. Reusabilidad. Consistencia de interfaz. Posibilidad de construir software. Prototipado rapido. Ocultación de información.
3.3. Paso de mensajes. El consumidor de clase solo ve, y le preocupan, las operaciones que puede realizar con los objetos de determinadas clases que le proporciona un suministrador, y no como están realizadas esas operaciones. Suele existir la tendencia a confundir los conceptos de mensaje y función invocada en respuesta a un mensaje o método, sin embargo es posible diferenciarlos teniendo en cuenta que:.
3.3.1. Una función o subprograma puede tener 0 o más argumentos. Un nombre de función se identifica mediante una relación 1:1 con el código a ejecutar, ya que el código a ejecutar depende del objeto al que se le envió el mensaje.
3.4. Enlace dinámico. Vamos a considerarlo como un instante de tiempo en el que se determina o identifica el trozo de código. Referido a programación vamos a considerar dos tipos de enlace distintos:
3.4.1. Compilación: el tipo de una variable o identificador, el código a ejecutar en respuesta a la llamada de una función se conoce en tiempo de compilación
3.4.1.1. Ejecucion: el tipo de una variable o identificador, o el código a ejecutar en respuesta a la llamada de una función no se conoce hasta que nos encontramos en tiempo de ejecución.
3.4.1.1.1. Cuando se habla de tipo de un identificador, se debe distinguir entre: • Identificador. • Valor • Tipo.
3.5. Polimorfismo. Polimorphos (poly= muchas, morphos= formas). En lenguaje de programación el término se aplica a: Objetos polimorfismos, vistos estos como variable o como argumentos de funciones, los cuales pueden contener valores de distintos tipo a lo largo de la ejecución del programa.
3.5.1. Dicho de otra manera, puede tener múltiples clases que se pueden utilizar de forma intercambiables, si bien cada clase implementa las misma propiedades o los mismos métodos de manera diferentes.
4. Desventajas
4.1. • Dado que el programa aumenta de tamaño, requiere más tiempo para ejecutarse, lo que conduce a una ejecución mas lenta del programa.
4.1.1. • No podemos aplicar la POO en todas partes ya que no es un lenguaje universal. Se aplica solo cuando se requiere. No es adecuado para todo tipo de problemas.
4.1.1.1. • Los POO toman tiempo para acostumbrarse.
4.1.1.1.1. • Todo se trata como un objeto en POO, por lo que antes de aplicarlo debemos tener un pensamiento excelente en términos de Objetos.
5. Definicion
5.1. Es una forma de programar que trata de encontrar una solución a estos problemas.
5.1.1. El diseño orientado al objeto, al igual que otras metodologías de diseño orientadas a la información, crea una representación del campo del problema del mundo real y lo hace corresponder con el ámbito de la solución, que es el software.
5.1.1.1. La naturaunica del diseño orientado al objeto queda reflejada en su capacidad de construir sobre tres pilares importantes del diseño de software: Abstraccion.
5.1.1.2. Abstracción.
5.1.1.3. Ocultamiento de informacion.
5.1.1.4. Modularidad.
5.2. Ventajas:
5.2.1. Fomenta la reutilizacion y ampliación del código.
5.2.1.1. Permite crear sistemas más complejos.
5.2.1.1.1. La programación se asemeja al mundo real.
5.3. Vamos a poner un ejemplo de nuestra vida cotidiana: Un gato. Este tiene diferentes características, como su raza, nombre, color, tamaño, etc. El gato también cuenta con diferentes acciones, como arañar, maullar, correr, etc.
5.3.1. En Programacion Orientada Objeto el gato sería un Objeto.
6. Eventos
6.1. El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.
6.2. Un ejemplo claro lo tenemos en los sistemas de programación léxico y Visual Basic, en los que a cada elemento del programa se le asignan una serie de eventos que generará dicho elemento.
6.2.1. La programación dirigida por eventos es la base de lo que llamamos interfaz de usuario, puede emplearse también para desarrollar interfaces entre componentes de Software o módulos del núcleo.
6.3. Eventos del raton: Aquellos en los que el usuario utiliza el ratón para provocarlos.
6.3.1. Eventos de teclado: Aquellos en los que el usuario utiliza el teclado para provocarlos.
6.3.1.1. Eventos de pagina: Aquellos en los que cambia el estado de la página.
7. Ventajas
7.1. • Modularidad para facilitar la resolución de problemas: cuando se trabaja con lenguaje de programación orientadas a objetos se tiene una mejor idea de donde buscar el error cuando algo no está funcionando bien.
7.1.1. • Reutilización de código mediante herencia: todos construyen sus objetos por separados pero descubren puntos en común entre ellos.
7.1.1.1. • Flexibilidad a través del polimorfismo: trata de una sola función puede cambiar de forma para adaptarse a cualquier clase en la que se encuentre.
7.1.1.1.1. • Resolución efectiva de problemas: En última instancia, de tomar un gran problema y dividirlo en partes solucionables.
8. Ejemplo
8.1. Vamos a crear una clase llamada persona. Sus atributos son: nombre, edad y DNI. Construye los siguientes métodos para la clase:
8.1.1. • Un conductor, donde los datos pueden estar vacios.
8.1.1.1. • Los setters y getters para cada uno de los atributos. Hay que valida las entradas de datos.
8.1.1.1.1. • mostrar( ): muestra los datos de la persona.