Conceptos Básicos del Paradigma Orientado a Objetos Programación II M.C Yolanda Moyao Martínez 1
Programación Orientada a Es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicacione s y programas informaticos. Objetos-POO
POO La POO nació en 1969 con el Dr.Kristin Nygaard pues trató de describir el movimiento de los barcos. Se dio cuenta que era muy difícil simular del mundo real(mareas, formas de líneas de costas y los movimientos de los barcos) con los métodos de programación existentes.
Era mas fácil adecuar el mundo real a la computadora que al revés. POO El primer lenguaje OO fue Simula 67
Las partes de un coche pueden ser internamente muy complejas pero lo importante es como interactúan entre si Ejemplo
Programa Orientado a Objetos Un programa OO se forma de muchos componentes independientes(objetos) y diferentes cada uno con funcionamiento específico y que se comunican o dan respuesta a solicitudes (mensajes) de los demás
POO vs programación estructurada
POO Vs Programación estructurada Encapsula datos y métodos Clase es la unidad de programación Orientado a acciones. Función es la unidad de programación
Ejemplo: Algoritmo en POO Encender un auto 1. Identificar los objetos llave, switch, clutch, palanca de velocidades 2. Relacionarlos de acuerdo a su funcionalidad a. poner palanca de velocidades en neutral b. colocar la llave dentro del switch c. presionar el clutch al fondo d. girar llave a la derecha hasta topar y soltar suavemente e. si el auto encendió. Fin del algoritmo f. Caso contrario. Girar llave a posición inicial, esperar 2 seg. y repetir inciso d.
Práctica 2 En equipos de 4 resuelve los problemas. 1. Cambiar un neumático 2. Pintar una mesa Analicen el problema e identifiquen en una lista todos los objetos. Usando los objetos de acuerdo a su funcionalidad, escriban un algoritmo para resolver el problema.
Tarea 2 Resuelve los problemas. 1. Hacer Tarea 2. trasladarse a la escuela Analiza el problema e identifica en una lista todos los objetos. Usando los objetos de acuerdo a su funcionalidad, escribe un algoritmo para resolver el problema.
POO La Programación Orientada a Objetos es un paradigma de programación que usa los objetos en sus interacciones, para diseñar programas. En POO los TDA s se refieren a las clases Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento.
Abstracción Objeto Encapsulamiento Clase Jerarquía Herencia Modularidad Polimorfismo
Abstracción Aislar un elemento de su contexto o del resto de los elementos que lo acompañan, identificando sus características esenciales que lo distinguen de los demás. Capacidad de conceptualizar entidades genéricas de información a partir de cosas concretas.
Abstracción Hay muchas aves diferentes pero cuando vemos una en particular la podemos reconocer inmediatamente aunque nunca la hayamos visto antes. Qué es una ave? Descríbela!!!!!
Todas son aves?
vertebrado de sangre caliente, provisto de pico y alas, con el cuerpo cubierto de plumas, que se reproduce por huevos y tiene respiración pulmonar y circulación doble y completa. Ave
Se centra en las características esenciales de algún objeto, en relación a la perspectiva del observador Abstracción
Ejemplo: Abstracción de estudiante
TDA
Encapsulamiento Significa reunir en cierta estructura todos los elementos que a determinado nivel de abstracción, se pueden considerar de una misma entidad. Oculta lo que hace un objeto de lo que hacen otros objetos del mundo exterior
Encapsulamiento Esconder detalles de como funciona algo, detrás de una interfaz. El usuario no se ve afectado si se cambia el funcionamiento interno del objeto mientras no se cambie la interfaz.
En el objeto vehículo el encapsulamiento significa que el conductor cuando frena, no necesita conocer el sistema de frenado. Ejemplo
Clase y Objeto Objeto es una entidad tanto tangible como intangible, que se puede imaginar y que tiene un estado, un comportamiento y una identidad. M.C Yolanda Moyao Martínez 24
Ejemplos seguro es un objeto intangible que tiene propiedades tales como tipo de cobertura, costo, vigencia, etc. Además tiene cierto comportamiento tal que este puede ser contratado, renovado, cancelado, modificado, etc. Seguro -Tipo_Cobertura -Costo -Vigencia +Contratar(..) +Renovar( ) +Cancelar( ) +Modificar( )
Ejemplo mesa Objeto tangible, tiene propiedades tales como color, largo, ancho, etc. Y tiene comportamiento tal que puede ser pintada, restaurada, modificada, etc. Mesa -Color -Largo -Ancho +Pintar(..) +Restaurar( ) +Modificar( )
Clase Clase Tipo de molde o plantilla que dicta lo que los objetos son y pueden o no hacer. Es un conjunto de objetos que comparten una estructura y un comportamiento. Animales
Ejemplo Servicios es una clase que define objetos que tienen propiedades tales como tipo de cobertura, costo, vigencia, etc. Además tienen cierto comportamiento tal que estos puede ser contratados, renovados, cancelados, modificados, etc. Servicios +Tipo_Cobertura +Costo +Vigencia +Contratar() +Renmovar() +Cancelar() +Modificar() M.C Yolanda Moyao Martínez 28
Atributos Atributos son los datos necesarios para describir los objetos creados a partir de alguna clase en particular. M.C Yolanda Moyao Martínez 29
Ejemplo el objeto Servicios_Juan es identificado por los atributos: tipo de cobertura, costo, vigencia, etc. Servicios_Juan -Tipo_Cobertura -Costo -Vigencia +Contratar() +Renovar() +Cancelar() +Modificar() M.C Yolanda Moyao Martínez 30
Estado Posibles condiciones en que un objeto puede existir. El estado de un objeto puede cambiar durante el tiempo.
Ejemplo Servicios_Juan Amplia 150,000 3 años Contratar() Renovar() Cancelar() Modificar()
Método Método es una secuencia de instrucciones que una clase u objeto sigue para realizar una tarea. Es un conjunto de operaciones que manipulan a los atributos del objeto. M.C Yolanda Moyao Martínez 33
Ejemplo En la clase Servicios los métodos que manipulan a los atributos de los objetos son: contratar, renovar, cancelar, modificar, etc M.C Yolanda Moyao Martínez 34
Java Implementaciones
Java es un lenguaje robusto En lugar de los punteros se emplean referencias a objetos, los cuales son identificadores simbólicos. El gestor de memoria de Java lleva una contabilidad de las referencias a los objetos. Cuando ya no existe una referencia a un objeto, éste se convierte en candidato para la recogida de basura (garbage collection).
Lenguaje portable El principal objetivo de los diseñadores de Java, y dado el gran crecimiento de las redes en los últimos años, fue el de desarrollar un lenguaje cuyas aplicaciones una vez compiladas pudiesen ser inmediatamente ejecutables en cualquier máquina y sobre cualquier sistema operativo. Por ejemplo, un programa desarrollado en Java en una estación Sun que emplea el S.O Solaris, debería poderse llevar a un PC que utilice S.O. Windows NT.
Lo mas simple posible Los diseñadores de Java trataron de mantener las facilidades básicas del lenguaje en un mínimo y proporcionar un gran número de extras con las librerías de clases.
Lenguaje seguro Se pretendía construir un lenguaje que no pudiera acceder a los recursos del sistema de manera incontrolada. Por este motivo se eliminó la posibilidad de manipular la memoria mediante el uso de punteros evitando así todo acceso ilegal a la memoria.
Máquina virtual
Crear programas en java - Aplicaciones Escribir el programa fuente en cualquier editor y guardarlo con extensión.java Compilar el fichero fuente mediante: javac miprograma.java. //genera el fichero.class Ejecutarlo (interpretar los byte-code) : java miprograma
Características Java no tiene funciones definidas fuera de las clases. Métodos y variables deben estar definidas dentro de una clase. El main debe ir dentro de una clase aunque no pertenezca a ninguna.
Sintaxis JAVA
Comentarios // comentarios para una sola línea /* comentarios de una o más líneas */ /** comentario de documentación, de una o más líneas */
Tipos Java es un lenguaje con control fuerte de Tipos (Strongly Typed). Esto significa que cada variable y cada expresión tiene un Tipo que es conocido en el momento de la compilación
Tipos primitivos boolean : Puede contener los valores true o false. byte : Enteros. Tamaño 8-bits. Valores entre -128 y 127. short : Enteros. Tamaño 16-bits. Entre -32768 y 32767. int : Enteros. Tamaño 32-bits. Entre -2147483648 y 2147483647. long : Enteros. Tamaño 64-bits. Entre -9223372036854775808 y 9223372036854775807. float : Números en coma flotante. Tamaño 32-bits. double : Números en coma flotante. Tamaño 64-bits. char : Caracteres. Tamaño 16-bits. Unicode. Desde '\u0000' a '\uffff' inclusive. Esto es desde 0 a 65535 El tamaño de los tipos de datos no depende de la implementación de Java. Son siempre los mismos.
Identificadores Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras,dígitos,$,_. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.
Ejemplos nombre_usuario Nombre_Usuario _variable_de_sistema $transacción var2
Variables Una variable es un área en memoria que tiene un nombre y un Tipo asociado. Es obligatorio declarar las variables antes de usarlas. Ejemplos: int i; char letra; tipo_variable nombre ; // Declaracion de un entero // Declaracion de un carácter boolean flag; // Declaracion de un booleano
Asignación La declaración y la asignación se pueden combinar en una sola expresión: int i = 5; char letra = 'c'; boolean flag = false; No existen variables globales pues todas deben estar dentro de alguna clase.
Literales caracter Un carácter entre apóstrofes (') o bien una sequencia de escape (también entre '). Las secuencias de escape están formadas por el símbolo \ y una letra o un número. Algunas secuencias de escape útiles: \n: \t: \b: \r: Salto de línea Tabulador Backspace. Retorno de carro \uxxxx: donde xxxx es el código Unicode del carácter. Por ejemplo \u0027 es el apostrofe (')
Operaciones sobre tipos primitivos Tipos Enteros Grupo de operadores Operadores de comparación que devuelven un valor boolean Operadores numéricos, que devuelven un valor int o long Operadores < (menor), <= (menor o igual), > (mayor), >= (mayor o igual), == (igual),!= (distinto) + (unario, positivo), - (unario, negativo), + (suma), - (resta), * (multiplicación), / (división), % (resto), ++ (incremento), -- (decremento), <<, >>, >>> (rotación), ~ (complemento a nivel de bits), & (AND a nivel de bits), (OR a nivel de bits) ^(XOR a nivel de bits)
Tipos Coma flotante Booleanos Grupo de operadores Operadores de comparación que devuelven un valor boolean Operadores numéricos, que devuelven un valor float o double Operadores booleanos Operadores < (menor), <= (menor o igual), > (mayor), >= (mayor o igual), == (igual),!= (distinto) + (unario, positivo), - (unario, negativo), + (suma), - (resta), * (multiplicación), / (división), % (resto), ++ (incremento), -- (decremento). == (igual),!= (distinto),! (complemento), & (AND), (OR), ^ (XOR), && (AND condicional), (OR condicional) Los operadores de java son los mismos y tienen la misma prioridad y asociatividad que en C
Palabras reservadas Abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, final, finally, float, for, goto, if,implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, super, switch, this, throw, throws, transient, volatil, while, void, synchronized,
//muy sencillo public class Primero { Modificador de acceso } Ejemplo public static void main(string[] args) { } Palabra reservada System.out.println( Hola Todos ); Clase Objeto Nombre de la clase Definición del método Llamado del método para imprimir Argumentos del método
Objeto out para flujo de salida estándar Algunos de sus métodos son: println(), print() Ejemplos System.out.println( Hola Todos ); System.out.println( Factorial +facto); System.out.print( Hola Todos );
Ejemplo: Clase servicios public class Servicios { public static void main(string[] args) { System.out.println( Servicios ); } public void contratar() { System.out.println( contratar ); } }
Creación de objetos Una vez que una clase se modela o se define, es posible crear o instanciar uno o más objetos que se identifican con dicha clase. Servicios_Juan Amplia 150,000 3 años Contratar() Renovar() Cancelar() Modificar() Servicios_Teresa Limitada 100,000 2 años Contratar() Renovar() Cancelar() Modificar()
Ejemplo: Instanciar objetos public class servicios{ public static void main(string[] args) { servicios k = new servicios(); System.out.println("Hola Todos!"); } public void contratar() { System.out.println("contratar"); } }
Mensaje Es una instrucción que se envía a un objeto, el cual se ejecutará al recibirlo; Incluye el identificador que contiene la acción a realizar por el objeto. Incluye los datos que este necesita para efectuar su trabajo.
Contratar() Ejemplo
Ejemplo: Contratar public class servicios{ public static void main(string[] args) { servicios juan = new servicios(); System.out.println("Hola Todos!"); juan.contratar(); } public void contratar() { System.out.println("contratar"); } }
Practica 3 En equipo de 4 realiza el modelado para las clases: aparatos_electrónicos, animales y medios_de transporte. Implementa en Java las 3 clases modeladas.
Tarea 3 Modela las clases: mochilas, juguetes, libros. Implementa en Java las 3 clases modeladas.
Objeto
El estado de un objeto lo establecen los valores concretos de los atributos y los enlaces que el objeto pueda tener con otros objetos. Estado
public class Servicios{ string tipo; int monto, vigencia; public static void main(string[] args) { } Servicios juan = new Servicios(); System.out.println( Servicios disponibles!"); juan.contratar( amplio,150,3); public void contratar(string t, int m, int v) { tipo=t; monto=m; vigencia=v; System.out.println("contratar"+"\n"+"tipo de cobertura "+tipo+"\n"+"pago "+monto+"\n"+"la vigencia es de "+vigencia); } }
Comportamiento Determina como un objeto actúa y reacciona a las peticiones de otros objetos. Se modela con un conjunto de mensajes a los que puede responder
Identidad: su nombre Cada objeto tiene identidad única, aunque en un momento dado el estado puede ser idéntico al de otros objetos gaviota águila Vuela Vuela
public class Servicios{ string tipo; int monto, vigencia; public static void main(string[] args) { } Servicios juan = new Servicios(); Servicios carla = new Servicios(); System.out.println( Servicios disponibles!"); juan.contratar( amplio,150,3); carla.contratar( amplio,150,3); public void contratar(string t, int m, int v) { tipo=t; monto=m; vigencia=v; System.out.println("contratar"+"\n"+"tipo de cobertura "+tipo+"\n"+"pago "+monto+"\n"+"la vigencia es de "+vigencia); } }
Clases Describe un grupo de objetos que tienen Propiedades en común (atributos) Comportamiento común(métodos) Relaciones comunes con otros objetos(asociación)
Clases V.S. Objetos La clase es una definición abstracta de los objetos. Define su estructura y comportamiento Sirve como plantilla para crear objetos Objeto es una instancia concreta de una clase(ejemplar). Los objetos se agrupan en clases
Objeto tierra Clase planetas
Atributos de clase static No es específico de cada objeto. Solo hay una copia del mismo y su valor es compartido por todos los objetos de la clase. Podemos considerarlo como una variable global a la que tienen acceso todos los objetos de la clase. Existe y puede utilizarse aunque no existan objetos de la clase. Para acceder a un atributo de clase se escribe: NombreClase.atributo
final variable constante final permite definer variables como constantes Ejemplo public static final x=20;
Métodos de clase static Tiene acceso solo a los atributos estáticos de la clase. No es necesario instanciar un objeto para poder utilizarlo. Para acceder a un método de clase se escribe: NombreClase.método()
Ejemplo Versión 1 Versión 2 public class m{ static int k=0; int p; public static void main(string args[ ]){ } } cuenta(); //omite la clase public static int cuenta(){k++; } public class m{ static int k=0; int p; public static void main(string args[ ]){ } } z.cuenta(); //no omite clase class z{ } public static cuenta(){k++; }