conceptos básicos del paradigma orientado a objetosymoyao/wp-content/uploads/2016/01/intro1... ·...
TRANSCRIPT
Conceptos Básicos del Paradigma
Orientado a Objetos
M.C Yolanda Moyao Martínez 1
Programación II
Programación Orientada a
Objetos-POO
• Es un paradigma de
programación
que usa objetos en
sus interacciones,
para
diseñar aplicacione
s y programas
informaticos.
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.
POO• Era mas fácil adecuar el
mundo real a la
computadora que al
revés.
• El primer lenguaje OO
fue Simula 67
Ejemplo
• Las partes de un
coche pueden ser
internamente
muy complejas
pero lo
importante es
como interactúan
entre si
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 auto1. 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?
Ave
• 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.
Abstracción
• Se centra en las
características
esenciales de algún
objeto, en relación a la
perspectiva del
observador
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.
Ejemplo
• En el objeto
vehículo el
encapsulamiento
significa que el
conductor cuando
frena, no necesita
conocer el sistema
de frenado.
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.
M.C Yolanda Moyao Martínez 28
Servicios
+Tipo_Cobertura+Costo+Vigencia
+Contratar()+Renmovar()+Cancelar()+Modificar()
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.
M.C Yolanda Moyao Martínez 30
Servicios_Juan
-Tipo_Cobertura
-Costo
-Vigencia
+Contratar()
+Renovar()
+Cancelar()
+Modificar()
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.
tipo_variable nombre ;
Ejemplos:
int i; // Declaracion de un entero
char letra; // 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: Salto de línea
• \t: Tabulador
• \b: Backspace.
• \r: 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
Grupo de
operadoresOperadores
Enteros
Operadores
de
comparación
que
devuelven
un valor boolean
< (menor) , <= (menor o igual) , >
(mayor), >= (mayor o igual), ==
(igual), != (distinto)
Operadores
numéricos,
que
devuelven un valor int
o long
+ (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
Grupo de
operadoresOperadores
Coma
flotante
Operadores de
comparación que
devuelven un valor boolean
< (menor) , <= (menor o igual)
, > (mayor), >= (mayor o
igual), == (igual), !=
(distinto)
Operadores
numéricos, que
devuelven un valor float o double
+ (unario, positivo), -
(unario, negativo), + (suma) ,
- (resta) , *
(multiplicación), / (división),
% (resto), ++ (incremento), --
(decremento).
BooleanosOperadores
booleanos
== (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,
Ejemplo//muy sencillo
public class Primero
{
public static void main(String[] args)
{
System.out.println(“Hola Todos”);
}
}
Palabra reservada Nombre de la clase
Definición del método
Argumentos del
método
Llamado del método para
imprimir
Modificador
de acceso
Objeto Clase
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 serviciospublic 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.
EjemploContratar()
Ejemplo: Contratarpublic 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
Estado
El estado de un objeto lo establecen los valores concretos de los atributos y los enlaces que el objeto pueda tener con otros objetos.
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
VuelaVuela
gaviota águila
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);
} }
ClasesDescribe 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
Clase planetas
Objeto tierra
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
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++; }
}
Versión 1 Versión 2