Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Programación Orientada a Objetos
AYUDANTÍA 3 Programación Orientada a Objetos
2
Conceptos Generales Modularización: Organizar el programa en grupos de subprogramas y datos lógicamente relacionados. Subprogramas compilados de forma independiente . Encapsulación: Agrupar subprogramas junto a los datos que manipular. Fácil mantención y reutilización. Escalabilidad TDA Modularización: Lema de “Divide y Vencerás”. De este modo, en caso de que haya alguna falla, se puede limitar a una sección de código o a una función y no al programa entero. Escalabilidad: Posibilidad de ampliar sin mayor problemas. Tipo de Datos Abstractos: Incluye la representación de un tipo de dato y las operaciones asociadas. Problema reutilización: TDA requieren ser adaptados, lo que implica entender los detalles de la implementación y se debe establecer relaciones entre distintos TDAs. Solución: Herencia.
3
Orientación a Objetos Objeto: Instancia de una clase. Niveles:
Puros: Smalltalk, Eiffel, Ruby. No puros: Java, Python. Extendidos a OO: C++, Fortran 2003, Perl. Herencia: Simple o múltiple. Objeto: Corresponde a una abstracción del mundo real. Puede alterar su estado a causa del procesamiento de mensajes. Puros: Todo es un objeto. No puros: Diseñados para POO, pero mantienen caracteristicas de otros paradigmas. Extendidos: Siguen otro paradigma pero se extendieron. Java tiene herencia simple e implementa de una u otra forma la múltiple con el uso de interfaces (tarea 3).
4
Objetos Estado y comportamiento.
Ejemplo: LinkedList <Animal> Animales = new LinkedList <Animal> Métodos: add(); addFirst(); addLast(); remove(i); get(i); Los objetos interactúan intercambiando: mensajes. Estado: Se mantiene con variables Comportamiento: Se implementan mediante métodos (así encapsula su estado y controla la manipulación de este). Mensaje: -id objeto -id método -parámetros. No es necesario que los objetos estén en el mismo proceso.
5
Clases y Herencia Clases: Representa un conjunto de objetos con características comunes. Puede tener variables de clase como métodos de clase. Comunes para todos. Se pueden instanciar de forma estática, dinámica de stack o dinámica de heap. Herencia: Reusar TDAs sin alterarlos. Jerarquía. Sobreescritura (Override). Es como una plantilla de objetos, onda como está definido el objeto y que cosas puede hacer, pero no es un objeto hasta que se instancia (se le asigna memoria). Es como una estructura. Los objetos se crean en el heap y su destrucción puede ser explícita (delete en C++) o implícita (como en Java). Reutilización de TDAs se hace extendiendo la funcionalidad del TDA, así permite adaptarlo a condiciones particulares. Padre (Superclase) Hijo (Subclase)
6
Interfaces Polimorfismo: Permite tratar a objetos como si fueran del tipo de la superclase. Interfaz: Define un protocolo para la interacción entre objetos sin conocer su clase. Ventajas: Capturan similitudes entre clases no relacionadas; permite declarar métodos que se espera que implementen las clases; establece un contrato de programación. Polimorfismo: Implementan los mismos métodos pero cambian su comportamiento. Override: Reimplementar algún método heredado. Interfaz: Una o más clases pueden usar la misma interfaz. Si implementa una interfaz, debe implementar todos sus métodos. Solo encabezado, no definición
7
Java Sun Microsystems. Sintaxis similar a la de C++ (¿En volah?)
Java Virtual Machine JSE: Java Standard Edition. JME: Java Micro Edition. JEE: Java Enterprise Edition. Orientado a objetos Portable, multiplataforma. Ejecución: Se inicia la JVM indicando el nombre de la clase que tiene el metodo main (que no se instancia, es el encargado de instanciar los objetos). Applet: “Aplicacioncita”, normalmente utilizada via Web, no ejecuta main.
8
Nombres y Codificación
Se agrupan en paquetes Para utilizarlas se importa el espacio de nombre. Declaración: package nombre; UTF-16. Permite mayor cantidad de caracteres. (ñ, á, Ä). Los paquetes se comportan como espacios de nombres (namespace std en C++). Para utilizar una clase A desde B, se importa el espacio de nombre al que pertenece A. Codificación utilizada por Java, utiliza una cantidad variable de bits para representar un caractér. También interpreta ASCII (7 bits)
9
Datos Primitivos y Declaración de Variables
Igual que en C. (excepto short y byte). Inicialización automática. (0, false, null). [modificador] tipo nombre. Visibilidad limitada. Inicialización al alcanzar su declaración. public: la clase puede ser accedida por clases de cualquier paquete. abstract: La clase no puede ser instanciada. final: La clase no puede ser derivada. Modificador opcional: static, final, public, private. Variables locales de un método, constructor o inicializador no se inicializan.
10
Conversión, Atributos, Control
Implícita: (automática). int float (no al revés) s = “hola” + 123; Explícita: Se denomnina cast. (double), (long). Integer.parseInt(“123”); Cada objeto tiene sus propias instancias Privado, Publico, Protegido, Abstracto y Estático. Protegido: Accesibles por una subclase. Público: Accesibles por cualquier clase. Cada objeto tiene su propio estado, si se cambia no afecta a los otros objetos. Si tinene un campo static, todo slos objetos comparten una única copia. Privado: priate, solo accesiblees por la propia clase. Static: La variable se comparte entre objetos. Abstracto: La clase no puede ser instanciada.
11
Creación de objetos Declaración de la clase no genera un objeto, sino una referencia. Si no se inicializa, su valor por defecto es NULL. Al usar el operador new, se crea el objeto. Falta de memoria: Garbage Collector. Si aún falta: OutOfMemoryError. Constructores. (inicializar variables).
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.