conceptos de programaciÓn orientada a objetos m. en c. cecilia pérez colín email:...

77
CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: [email protected]

Upload: javier-juan-luis-rojo-rico

Post on 02-Feb-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS

M. en C. Cecilia Pérez Colín

Email: [email protected]

Page 2: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONTENIDO

Conceptos de Programación Orientada a Objetos Clases Objetos Herencia Relaciones de uso Generadores Iteradores Manejo de excepciones Paquetes (módulos) Interfaces

Programación en Java

Page 3: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Crear software es inherentemente complejo, muchas veces esta complejidad excede la capacidad humana.

Además una de las tareas de los ingenieros de software es crear sistemas que parezcan simples.

La POO es una forma de organizar nuestras ideas con respecto a nuestro mundo, de manera conceptual.

Esta organización se basa en el tipo de cosas, o tipos de objetos, con los que convivimos diariamente.

Page 4: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Page 5: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

POO surgió de la necesidad de simular sistemas de forma sencilla.

La idea básica consiste en simular conceptos que son fundamentales en el pensamiento humano

Page 6: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

El análisis y diseño orientado a objetos es un método para crear software.

El concepto principal es que uno debe modelar sistemas de software como una colección de objetos que cooperan entre sí mediante el envío de mensajes.

Se trata a cada objeto como instancia de una clase dentro de una jerarquía de clases.

Lenguajes Orientados a Objetos: Simula, Smalltalk, Object Pascal, C++, the

Common Lisp Object System (CLOS), Ada, Eiffel, Java y más.

Page 7: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

PROGRAMACIÓN ESTRUCTURADA VS PROGRAMACIÓN ORIENTADA A OBJETOS

Con los métodos de programación estructurada los desarrolladores a crean sistemas basados en algoritmos.

De igual manera, con los métodos orientados a objetos los desarrolladores crean sistemas basados en objetos y clases .

Las ideas fundamentales de clases y objetos aparecieron por primera vez en el lenguaje de programación Simula 67.

Page 8: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

VENTAJAS Y DESVENTAJAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

VENTAJAS: Aumenta la reusabilidad Forma más modular de modelar problemas => diseños más claros => implementación más clara => mejor manejo de la complejidad Mantenimiento más eficiente

Page 9: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

VENTAJAS Y DESVENTAJAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

DESVENTAJAS: La OO no garantiza la construcción de un

sistema correcto, como ningún otro método de programación.

Mayor concentración en requerimientos, análisis y diseño.

OO, no es solo la programación, es entender la abstracción.

Las ventajas de OO se obtienen a largo plazo

Page 10: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

¿QUÉ ES LA PROGRAMACIÓN ORIENTADA A OBJETOS?

La programación orientada a objetos es un método de implementación donde los programas están organizados como colección de objetos cooperativos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son todas miembro de una jerarquía de clases unidas mediante relaciones de herencia. (Grady Booch)

Observar estos tres elementos de la definición:1. Utiliza objetos y no algoritmos2. Cada objeto es instancia de una clase3. Las clases se relacionan entre sí mediante

herencia

Page 11: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

¿QUÉ ES EL DISEÑO Y ANÁLISIS ORIENTADO A OBJETOS?

El diseño orientado a objetos es un método de diseño que acompaña al proceso de descomposición orientada a objetos y una notación que describe tanto modelos lógicos y físicos, así como estáticos y dinámicos del sistema bajo diseño (Grady Booch).

El análisis orientado a objetos es un método de análisis que examina los requerimientos del sistema desde la perspectiva de clases y objetos encontrados en el vocabulario de la descripción del problema (Grady Booch).

Page 12: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

5 PRINCIPALES ESTILOS DE PROGRAMACIÓN

Todos los estilos de programación tiene su propio marco conceptual.

Orientado a y basado en:

Procedimientos – algoritmos Objetos – Clases y objetos Lógica – Metas, generalmente lógica de

predicados Reglas – IF, THEN Restricciones – Relaciones invariantes

Page 13: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

La abstracción denota las características esenciales de un objeto que lo distinguen de otros tipos de objetos.

• Es el análisis de las características, atributos y métodos que son (y que no son) de interés para la aplicación en consideración.

El encapsulamiento es el proceso modularizar los elementos de una abstracción que constituyen su estructura y comportamiento. “Los secretos de la abstracción”.

• El ocultamiento de datos relacionados detrás de una interface de métodos. Estos métodos permiten acceder a a la información y manipularla convenientemente.

• En OO un sistema se modulariza en clases, qua a su vez se modularizan en métodos y atributos.

• El comportamiento es encapsulado en métodos• La información es encapsulada en atributos• A través del encapsulamiento se define el qué se hace ocultando

el cómo se hace.

Page 14: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

La modularidad es la propiedad de un sistema para ser descompuesto en un conjunto de módulos unidos y acoplados.

• El acto de dividir un programa en componentes individuales que reducen su grado de complejidad.

La jerarquía es la clasificación u orden de las abstracciones.• La herencia es la jerarquía más importante: “es un”, “es parte de”

La asignación de tipos es la imposición de asignar una clase a un objeto; así los objetos de diferentes tipos no pueden ser intercambiados, o a lo más, ser intercambiados pero con muchas restricciones.

La concurrencia es la propiedad que distingue un objeto activo de uno que no está activo.

• La concurrencia permite actuar a diferentes objetos al mismo tiempo.

La persistencia es la propiedad de un objeto a existir en tiempo y/o espacio.

Page 15: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS Un objeto es una entidad que mantiene una estructura

(atributos), que ofrece un conjunto de operaciones (comportamiento), tiene una identidad (distingue un objeto de otro).

• El conjunto de valores asociados a cada atributo en un momento dado se denomina estado.

• Los objetos responden a mensajes recibidos mediante la ejecución de métodos.

Información nombre = “Universidad RIO” domicilio = “Rio 3245”

UniversidadPartes alumnos profesores

Comportamiento inscribirAlumno modiDatosProfesor

Objeto

Page 16: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Una clase es un molde a partir del cual se pueden crear objetos con la estructura y el comportamiento definidos en ella.

• La identidad de cada objeto es única y no depende de la case, pues aunque los objetos de misma clase tiene igual estructura, su estado puede ser diferente.

Alumno

+Nombre:string+Domicilio:string

+Alumno(n:String; d:String)+setNombre(n:String)+getNombre():string

public class Alumno {

public String Nombre;public String Domicilio;

public Alumno(String n, String d){}

public void setNombre(String n){}

public String getNombre(){}

}

Page 17: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

• Todos los objetos son ejemplares o instancias de una clase.

Alumno

+Nombre:string+Domicilio:string

+Alumno(n:String; d:String)+setNombre(n:String)+getNombre():string

alu3:Alumno

Nombre = J ose LopezDomicilio = nada

alu2:Alumno

Nombre = Abel GarciaDomicilio = ejemplo

alu1:Alumno

Nombre = J uan PerezDomicilio = ejemplo

JavaAlumno alu1 = new Alumno(“Juan Perez”, “ejemplo”);Alumno alu2 = new Alumno(“Abel Garcia”, “ejemplo”);Alumno alu3 = new Alumno(“Jose Lopez”, “nada”);

Page 18: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - CLASES

• En cada clase se define la estructura y el comportamiento que tendrán los objetos

• El encabezado consta como mínimo, de la visibilidad de la clase• Pública (public)• Privada (private)• Protegida (protected)

• La estructura de los objetos de la clase se define declarando sus atributos como datos de cualquiera de los tipos definidos por el lenguaje

• Las variables utilizadas para definir los atributos en una clase se conocen como variables de instancia.

Page 19: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - DATOS

• Los datos que intervienen en la solución de un problema pueden ser

• Datos de algún tipo definido por Java, • Objetos de clases definidas en Java (paquetes)

• Definidas por el lenguaje• Definidas por otros programadores

• Objetos de clases definidas por el mismo programador

• En Java es preciso asignar un identificador a cada elemento que se defina: clase, atributo, método, objeto, dato, etc.

Page 20: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – PALABRAS RESERVADASPalabras reservadas

abstract else interface static

boolean extends long super

break false main switch

byte final native synchronized

case finally new this

catch float null throw

char for package throws

class if private true

continue implements protected try

default import public void

do instanceof return volatile

double int short while

Page 21: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – TIPOS DE DATOS PRIMITIVOS

• Los tipos de datos definidos en Java y denominados primitivos son:

Tipo Descripción Literales (ejemplos)

byte Entero de 8 bits 8, 25

short Entero de 16 bits 567

int Entero de 32 bits -78654

long Entero de 64 bits 45678954L

float Real en 32 bits con 7 dígitos en la parte decimal

47.5F

double Real en 64 bits con 15 dígitos en la parte decimal

3456e-3

char Carácter en 16-bits (unicode)

‘a’, ‘\’’,’\n’,’\u03A6’ (π)

boolean Booleano true y false

Page 22: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – REFERENCIA A OBJETOS

• Además de los datos de tipo primitivo, en Java se tiene a los objetos como el tipo de datos más importante.

• Para poder manipular a los objetos se tiene a las referencias.

• Una referencia contiene una dirección en memoria, donde se encuentra el objeto con el que se quiere trabajar.

• En este tipo de datos sólo hay una literal, null

Page 23: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - DECLARACIÓN

Ejemplos de declaración de variables int edad, peso; double salario, altura; double altura = 0.48;

Ejemplos de declaración de constantes final int IVA = 16;

Page 24: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – EXPRESIONES

Los datos de tipo primitivo no son objetos, por lo tanto no existen métodos asociados a ellos, la única forma de trabajar con estos datos es mediante los operadores.

Un operador y sus operandos constituyen una expresión La expresión puede ser

aritmética lógica asignación

Los operandos pueden ser literales constantes variables resultado de llamadas a métodos

Page 25: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - OPERADORESOperadoraritmético

Descripción

+ Suma

- Resta

* Multiplicación

/ División

% Residuo de la división

Operadorunario

Descripción

+ Mas unario

- Menos unario

++ Autoincremento

-- Autodecremento

Operador de relación

Descripción

< Menor que

<= Menor o igual que

== Igual que

>= Mayor o igual que

> Mayor que

!= Diferente de

Operadorpara cadenas

Descripción

+ Concatenación

Page 26: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - OPERADORESOperador lógico

Descripción

&& Conjunción

|| Disyunción

! Negación

&& true false

true true true

false false false

|| true false

true true true

false true false

!

false true

true false

Page 27: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

Operador Descripción Asoc

() [] . Paréntesis y punto I

++ -- Incremento y decremento (post) I

++ -- Incremento y decremento (pre) D

! Negación D

- + Menos y más unarios D

new Operador para crear objetos D

(tipo) Conversión explícita de tipo D

* / % Multiplicación, división, residuo I

+ - Suma, resta I

instanceof <, <=, >, >=

Operadores de relación I

== != Operadores de igualdad I

&& Conjunción I

|| Disyunción I

?: Operador condicional D

= op = Asignación D

Precedencia de operadores de mayor a menor

Page 28: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CONVERSIÓN DE TIPOS En las expresiones que involucran operandos de diferente

tipo y estas no son compatibles se pueden convertir implícita o explícitamente al tipo de dato que necesitamos.

La conversión implícita ocurre al tener una asignación de un dato con tipo de menor prioridad a otro con mayor prioridad

Las prioridades de menor a mayor son: byte char short int long float double

Page 29: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CONVERSIÓN DE TIPOS

La conversión explícita se utiliza cuando la implícita no es factible. Esta se indica con el tipo de resultado deseado entre paréntesis antes del nombre de la variable.

Ejemplo de la implícita: Al tener una expresión que incluya datos de tipo

entero y datos de tipo real, el resultado será un número real.

Ejemplo de explícita:long largo = 99988883476L;int entero = (int) largo; //trunca a un valor de

32 bits

Page 30: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

• Un constructor es un método definido en una clase usado para instanciar objetos de la misma.

• En Java, la aplicación del operador new crea un objeto, separando el espacio necesario para mantener su estado y devuelve como resultado la referencia al objeto creado.

• Una referencia es un tipo de dato usado para trabajar con objetos.

Alumno

+Nombre:string+Domicilio:string

+Alumno(n:String; d:String)+setNombre(n:String)+getNombre():string

Java:Alumno alu1 = new Alumno(“Juan Perez”, “ejemplo”);Alumno alu2 = new Alumno(“Abel Garcia”, “ejemplo”);Alumno alu3 = new Alumno(“Jose Lopez”, “nada”);

Page 31: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

• Un destructor (recolector de basura)• En Java, la eliminación de objetos es implícita.• Si se piensa que se tiene varios objetos sin

referencia, se puede llamar al método gc de la clase System.

Page 32: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

EJEMPLO DE PROGRAMA EN JAVA

/** *Programa para que envíe un mensaje de

felicitación*Objetivo Mostrar como se crean y usan objetos*@autor suNombre*@versión Fecha*/public class Felicitación { public static void main (String [] pps) { System.out.println(“¡Felicidades! Has escrito tu

primer programa en Java”); }}

Page 33: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – MATRICES O ARREGLOS Las matrices o arreglos son un grupo de variables con el mismo

nombre y tipo. La manera de referirse a cada uno de los elementos de una matriz es

mediante su índice. Los tipos de la matrices son los mismos que el de las variables. Tenemos 2 tipos de arreglos: unidimensional y bidimensional.

UNIDIMENSIONALES:

  tipo nombre_array[]=new tipo[tamaño];

Ej.: int [] enteros =new int[10]

tipo nombre_array[]={valores};

Ej.: int mesdias[]={31,28,31,30,31,30,31,31,30,31,30,31};

BIDIMENSIONALES:

tipo nombre_array[][]=new[lineas][columnas];

Ej. int a[][] = new int[10][3]

 

Page 34: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – MATRICES O ARREGLOS Los arreglos en Java son realmente objetos que deben crearse por medio del

operador new.

Tiene una función miembro length que se utiliza para conocer la longitud de cualquier arreglo. int a[][] = new int[10][3];

a.length; /* 10 */

a[0].length; /* 3 */

  Para crear un array en Java hay dos métodos básicos.

Crear un array vacío Crear el arreglo con sus valores iniciales

Se pueden crear arreglos de tipos referencia (arreglos de objetos) Tipo identificador[] = new tipo[tamaño] Ej.: Alumno cursoPA[] = new Alumno[50]

public class Alumno { private string nombre; … }

Page 35: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS El comportamiento de los objetos de una clase se

programa mediante la creación de métodos. Un método es el conjunto de instrucciones que se

deben realizar al llamar a ejecutar tal método. Componentes de un método:

Visibilidad - Especifica a cuáles métodos se puede tener acceso

Tipo de valor que devuelve – void si no devuelve nada Identificador del método – por convención se utiliza

letra minúscula Parámetros – especifica el tipo de cada valor que

requiere el método para trabajar Paso de parámetro por valor

Cuerpo – bloque con las instrucciones que implementan la tarea.

Page 36: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS Métodos modificadores

Tienen el propósito de modificar el valor de los atributos privados del objeto

No devuelven valor alguno. Generalmente el nombre de estos métodos empieza con la

palabra set.

Métodos de acceso Son el medio de conocer el valor de los atributos privados

del objetos. No reciben parámetros. El valor que devuelven es del tipo definido en el atributo. Generalmente su nombre empieza con la palabra get. Si se especifica que un método va a devolver un valor, se

debe usar en el cuerpo del mismo la instrucción return seguida de una expresión cuyo valor es lo que se devuelve.

Page 37: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS

Métodos calculadores Se emplean para implementar cualquier

comportamiento deseado de los objetos. Pueden recibir y/o devolver valores No modifican el estado del objeto, ni devuelven

el valor de algún atributo, trabajan con el estado del objeto para calcular un valor

Métodos constructores Un constructor es un método cuyo objetivo es

asignar valor inicial a cada atributo de un objeto recién creado.

Se verá más adelante

Page 38: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS

SINTAXIS: valor_devuelto nombre_método([valores]) { cuerpo; } Si tenemos que hacer referencia a las

variables de instancia y los métodos contenidos en un objeto se necesita el operador punto(.).

Ej. Objeto.nomb_método( ); Objeto.nomb_método(valores); Objeto.variable;

Page 39: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS

El método main es indispensable pues es ahí donde empieza la ejecución del programa

public static void main(String [] arg) { …. //algoritmo }

Es un método público (public) Es un atributo compartido por todos los objetos

de la clase, es decir, se trata de un atributo de clase (static)

No devuelve valor alguno (void) Recibe un parámetro de tipo cadena

Page 40: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS

STATIC: El uso de este modificador nos permite utilizar el método y las variables sin necesidad de crear objetos. Los métodos estáticos solo pueden llamar a

métodos estáticos. Hay que ser consciente que es equivalente a declararlas como globales.

Al modificar el valor de un atributo estático en un objeto se modifica para todos los objetos de esa clase.

Si la llamada al método static esta en otra clase distinta, se tiene que poner el nombre de la clase en donde esta declarado el método static y el operador punto (.).

nomb_clase.nomb_metodo([parámetros]);

Page 41: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - MÉTODOS

EJEMPLO: Teniendo una clase con 2 variables y un método. Desde la otra clase se crea el objeto, se llama al método y se muestran los valores del objeto. Mostrar aplicación “PruebaPunto” en NetBeans

EJEMPLO: Pasar valores al método. Mostrar aplicación “PruebaPunto2” en NetBeans

EJEMPLO: Uso de las variables Static. Mostrar aplicación “PruebaEstatica” en NetBeans

EJEMPLO: Mostrar lectura de enteros. Mostrar aplicación “???” en NetBeans

Page 42: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CONSTRUCTORES

Constructores Métodos para inicializar objetos. Este método no posee tipo de retorno, ni

siquiera void Recibe el nombre de la clase que lo contiene. Se llama mediante el operador new Puede contener parámetros Toda clase de Java debe poseer por lo menos un

constructor. Si desde un constructor se llama a otro

constructor de la misma clase se usa la palabra this en vez de new

La palabra this sólo puede aparecer en la primera sentencia de un constructor.

Page 43: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CONSTRUCTORES

EJEMPLO: Constructores Mostrar aplicación “PuntoConstructor” en

NetBeans

EJEMPLO: Diferentes métodos y constructores y la aplicación muestra la diferencia entre referencia y objeto Mostrar aplicación Diferencia

Page 44: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – SENTENCIAS DE CONTROL Es la manera que tiene un lenguaje de programación de

provocar que el flujo de la ejecución avance y se ramifique en función de los cambios de estado de los datos.

IF-ELSE: La ejecución atraviesa un conjunto de estados boolean que determinan que se ejecuten distintos fragmentos de código. La cláusula else es opcional, la expresión puede ser de cualquier tipo y más de una (siempre que se unan mediante operadores lógicos).

 if (expresion-booleana)

sentencia1;else

sentencia2;

Operador ternarioEj.: e = (b==0) ? 0 : (a/b)

Page 45: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – SENTENCIAS DE CONTROL IF-ELSEIF ELSE: Permite introducir más de una expresión de

comparación. Si la primera no se cumple, compara la segunda y así sucesivamente. En caso de que no se cumpla ninguna de las comparaciones se ejecutan las sentencias correspondientes al else.

 if (expresion-booleana1) {

sentencia1; }

else if (expresión-booleana2) {sentencia2;

}……. else { sentencian; }

Page 46: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – SENTENCIAS DE CONTROL SWITCH: Realiza distintas operaciones en base al valor de una

única variable o expresión. Es una sentencia muy similar a if-else, pero esta es mucho más cómoda y fácil de comprender.

switch (expresión) { case valor1: sentencia;

break;case valor2:

sentencia;break;…..

case valorN:sentencia;break;

default:}

Page 47: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – SENTENCIAS DE CONTROL WHILE: Ejecuta repetidamente el mismo bloque de código hasta

que se cumpla una condición de terminación. 

[inicialización;]while(condición){ cuerpo; iteración;}

DO-WHILE: Es lo mismo que en el caso anterior pero aquí como mínimo siempre se ejecutara el cuerpo una vez, en el caso anterior es posible que no se ejecute ni una sola vez.

 [inicialización;]do{

cuerpo; iteración; } while(condición);

Page 48: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – SENTENCIAS DE CONTROL FOR: Realiza las mismas operaciones que en los casos anteriores pero la

sintaxis es una forma compacta.   for (inicialización;condición;iteración) {

sentencia1; sentencia2;

}

EJEMPLO: Este programa muestra números del 1 al 100: class multi{  

public static void main(String args[]){  int n1=0;  for (n1=1;n1<=100;n1++)   System.out.print(n1+" ");  

}  } CONTINUE: lo que hace es ignorar las sentencias que tiene el ciclo y

saltar directamente a la condición para ver si sigue siendo verdadera, si es así sigue dentro del ciclo en caso contrario saldría directamente de el.

Page 49: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

Modularización Facilita el diseño de programas grandes Es la propiedad de un sistema para ser descompuesto en un

conjunto de módulos unidos y acoplados. El acto de dividir un programa en componentes individuales que

reducen su grado de complejidad.

Abstracción Facilita el diseño de programas grandes. Denota las características esenciales de un objeto que lo

distinguen de otros tipos de objetos.• Es el análisis de las características, atributos y métodos que son

(y que no son) de interés para la aplicación en consideración.

Agregación Incluir objetos en la estructura de objetos de otra clase. Por ejemplo, una línea tiene un punto p1 y un punto p2.

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Page 50: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

• Las clases se relacionan entre sí por mediante relaciones de herencia.

• Es una jerarquía estilo “es un(a)”. Por ejemplo, “un alumno es una persona”

• La herencia es una generalización/especialización de una clase.

• Las superclases son abstracciones generalizadas

• Las subclases son abstracciones especializadas.• La subclase puede añadir nuevas variables y

métodos y/o redefinir (overridden) las variables y métodos heredados.

Page 51: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Page 52: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS• La herencia es el mecanismo que permite definir nuevas

clases basadas en la existencia de otras muy parecidas evitando la duplicidad de código.

AutomaxFuelmaxNroDePasajerosmodelovelocidad. . .

acelerar()desacelerar()doblarAIzq()doblarADcha(). . .

Avion

maxAltitudmaxFuelmaxNroDePasajerosvelocidadnroDeMotores. . .

acelerar()desacelerar()descender()ascender(). . .

ANTES DESPUES

VehiculomaxFuelmaxNroDePasajerosvelocidad. . .acelerar()desacelerar(). . .

Avion

maxAltitudnroDeMotores. . .

descender()ascender(). . .

Auto

modelo. . .doblarAIzq()doblarADcha(). . .

superclase

subclase

Page 53: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

VENTAJAS: Se reduce el tiempo que toma construir nuevas

aplicaciones, debido a que el software no tiene que re-inventarse. Una aplicación se construye tomando clases ya escritas, en caso necesario se extienden.

Cuando se crean nuevas clases utilizando herencia, éstas son pequeñas debido a que sólo contienen las diferencias con respecto a sus superclases.

Es posible extender clases sin necesidad de tener el código de ellas.

Las aplicaciones son más fáciles de entender debido a que es menos el software nuevo.

Se facilita el trabajo de mantenimiento debido a que cualquier cambio en un atributo o método compartido sólo se hace en un lugar, evitando posibles inconsistencias.

Page 54: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - HERENCIA

• Java permite múltiples niveles de herencia, pero no permite que una clase derive de varias (no es posible la herencia múltiple).

• Todas las clases de Java creadas por el programador tienen una superclase. Cuando no se indica explícitamente una superclase con la palabra extends, la clase deriva de java.lang.Object, que es la raíz de toda la jerarquía de clases de Java.

Page 55: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - HERENCIA• La clase Object tiene métodos interesantes para cualquier

objeto que son heredados por cualquier clase.• 1. Métodos que pueden ser redefinidos por el programador:

• clone() – Crea un objeto a partir de otro objeto de la misma clase• equals() – indica si dos objetos son o no iguales• toString() – Devuelve un String que contiene una representación

del objeto como cadena de caracteres.• finalize() – Se verá en el tema de excepciones

• 2. Métodos que no pueden ser redefinidos (son métodos final):• getclass() – devuelve un objeto de la clase Class, al cual se le

pueden aplicar métodos para determinar el nombre de la clase, su super-clase, las interfaces implementadas, etc.

• notifiy(), notifyall y wait() – Son métodos relacionados con las threads, los verán más adelante

Page 56: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - HERENCIA Para especificar que se va a usar el mecanismo de herencia

se utiliza la palabra reservada extends seguida del nombre de la clase que se heredará.

Los elementos públicos de una superclase pueden ser utilizados sin ningún problema para cualquier clase y sus subclases. Para esto se utiliza la palabra reservada public.

Los elementos privados de una superclase no pueden ser utilizados desde fuera de la clase en que se definieron, así sea una subclase. Para esto se utiliza la palabra reservada privated.

Si se quiere tener atributos y métodos que sean privados para todas las clases excepto para las clases derivadas, es necesario que en su declaración se precedan la palabra reservada protected.

Page 57: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – HERENCIA - ENCAPSULAMIENTO

Clase A Clase A1 Clase A2

Clase B

private

protected

public

Niveles de acceso de los elementos de la clase A

Page 58: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - HERENCIA

Sintaxis: class nombre_clase extends nombre_superclase {cuerpo;}

Sobrecarga Se utiliza para crear más de un método con el mismo

nombre, pero con distinto numero de parámetros y operaciones distintas. La sobrecarga se puede utilizar para miembros constructores o para la herencia.

EJEMPLO: Partiendo de los ejemplos anteriores vamos a crear una jerarquía de clases y muestra uso del constructor super. Mostrar aplicación “JerarquiaPunto” en NetBeans

Page 59: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CONSTRUCTORES (REPETIDO)

Constructores Métodos para inicializar objetos. Este método no posee tipo de retorno, ni

siquiera void Recibe el nombre de la clase que lo contiene. Se llama mediante el operador new Puede contener parámetros Toda clase de Java debe poseer por lo menos un

constructor. Si desde un constructor se llama a otro

constructor de la misma clase se usa la palabra this en vez de new

La palabra this sólo puede aparecer en la primera sentencia de un constructor.

Page 60: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CONSTRUCTORES EN SUBCLASES

El constructor de una subclase puede llamar al constructor de su superclase por medio de la palabra super(), seguida entre paréntesis de los argumentos apropiados.

La llamada al constructor de la superclase debe ser la primera sentencia del constructor excepto se llama a otro constructor de la misma clase con this().

Si el programador no prepara un constructor, el compilador crea uno, inicializando las variables de los tipos primitivos a sus valores por defecto y a los Strings y referencias a objetos a null.

Page 61: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – CLASES Y MÉTODOS FINALES

Las variables declaradas como final no pueden cambiar su valor una vez que han sido inicializadas.

Una clase declarada final no puede tener subclases.

Un método declarado como final no puede ser redefinido por una subclase

Page 62: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – FINALIZADORES

Los finalizadores son métodos que completan la labro del garbage collector que sólo libera la memoria reservada con new.

Se llama automáticamente cuando se va a destruir un objeto

Se utilizan para ciertas operaciones de terminación distintas de liberar memorial, por ejemplo, cerrar archivos, cerrar conexiones de red, etc.

Un finalizador es un método de objeto (no static), void, sin argumentos. finalize()

Page 63: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

La relación de herencia entre clases forma una estructura jerárquica similar a un árbol.

Una superclase puede ser subclase de otra clase superior y una subclase puede ser superclase de otra clase.

La especialización de una clase permite reusar una clase existente para definir una nueva clase más específica

Cuando durante el diseño de la solución a un problema se obtienen diversas clases relacionadas y no existen clases para extender, se crea una clase que generalice a todas ellas.

Page 64: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – REDEFINICIÓN MÉTODOS HEREDADOS

Una clase puede redefinir cualquiera de los métodos heredados de su superclase que no sean final.

El nuevo método sustituye al heredado para todos los efectos en la clase que lo ha redefinido.

Los métodos de la superclase que han sido redefinidos, pueden ser todavía accedidos por medio de la palabra super desde los métodos de la subclase

Los métodos de clase o static no pueden ser redefinidos en las subclases.

Page 65: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – ESPECIALIZACIÓN / GENERALIZACIÓN Un objeto de una subclase puede usarse en cualquier

lugar en que se usaría un objeto de su superclase, esto se debe a que el objeto también pertenece a su superclase.

Es decir, siempre es posible asignar un objeto especializado a uno más general y no al revés sin una conversión explícita.

Por ejemplo;Cuenta cta; //superclaseCuentaConServicios ctaConS = new CuentaConServicios();

//subclaseCuentaDeCredito ctaCred = new CuentaDeCrédito(); //subclase…….cta = ctaCred //correctoctaCred = cta //incorrectoctaConsS = ctaCred //incorrecto

Page 66: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – ESPECIALIZACIÓN / GENERALIZACIÓN

Para evitar problemas, al asignar referencias a objetos es conveniente utilizar el operador instanceof, el cual devuelve la clase a la que pertenece el objeto.

EJEMPLO: Se verá en el programa de PruebaCuentas a continuación.

EJEMPLO: Aplicación del investigador que desea llevar el control de los libros, tesis y artículos que tiene.

Page 67: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – ESPECIALIZACIÓN / GENERALIZACIÓN

ObraautortítuloañoMétodos

Libro…….editorial

Métodos

Tesis…….directorGrado

Métodos

Artículo…….revistavolumennúmero

Métodos

Page 68: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS La habilidad de decidir cuál método aplicar a un objeto en una

jerarquía de herencia se denomina polimorfismo.

Polimorfismo es el mecanismo por el cual un objeto puede responder al mismo mensaje de diferentes maneras, permitiendo a los objetos interactuar con otros sin conocer su tipo exacto anticipadamente.

Es distinto al concepto de sobrecarga pues este se lleva a cabo dentro de una misma clase.

El ejemplo más sencillo de polimorfismo es cuando se envía un mensaje a un objeto para que realice una tarea, la subclase verifica si tiene un método con esa firma.

Si es así, ejecuta el método Si no turna el mensaje a la superclase Este proceso se repita en la jerarquía de herencia hasta llegar a la raíz. Si el método buscado no se encuentra entonces se tiene un error

Page 69: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – EJEMPLO HERENCIA EJEMPLO: Crear nuevas clases por combinación,

extensión y/o especialización de clases existentes, a través del mecanismo de herencia.

Problema: Se requiere un programa para el mantenimiento de

cuentas bancarias teniendo cuentas de débito, cuentas con pago automático de servicios y cuentas de crédito.

Con todas las cuentas se permite retirar dinero, depositar dinero, y conocer el saldo de la misma. Las cuentas con pago de servicio además permiten el pago automático de teléfono, y las cuentas de crédito permiten comprar crédito y consultar este crédito. (Ver diseño en el slide siguiente)

Mostrar aplicación “PruebaCuentas” en NetBeans

Page 70: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - HERENCIAClase Cuenta CuentaCon

ServiciosCuentaDeCredito

Estructura: saldonumCuenta

saldonumCuenta

saldonumCuenta

Comportamiento:

retirardepositardarSaldo

retirardepositardarSaldopagarTeléfono

retirar (superclase)depositardarSaldocomprarretirar (subclase)obtenerValorDeuda

Mediante la herencia nos evitamos:1. Modificar la clase Cuenta agregando los métodos

requeridos. Alterar el funcionamiento de la clase ya creada.2. Copiar el código de Cuenta en el programa para el pago de

servicios y hacer el cambio necesario (duplicidad de código)

Page 71: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS Las clases genéricas o polimorfismo real paramétrico

son clases que almacenan datos cuyo tipo de determina al momento de crear objetos de tal clase.

Los métodos pueden trabajar con argumentos de diversos tipos, generalmente realizando el mismo tipo de trabajo independientemente del tipo de argumento.

En Java se este concepto se logra con la clase Object.

Una envoltura es una clase que permite trabajar con un dato primitivo como si fuera un objeto y por lo tanto usarlo cuando se requiera un objeto de la clase Object.

Page 72: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – EJEMPLO CLASES GENÉRICAS

EJEMPLO: Crear nuevas clases por combinación, extensión y/o especialización de clases existentes, a través del mecanismo de herencia.

Problema: Una memoria que consta de un conjunto de celdas

que almacene cualquier dato de alguno de los diferentes tipos que se permitan en el lenguaje.

Mostrar aplicación “ClaseGenerica” en NetBeans

2 5.3

“a” Punto(3,2)

………...

Memoria

Page 73: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos.

Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general.

Las clases abstractas se declaran anteponiéndoles la palabra abstract

public abstract class Figura { }

Puede tener métodos declarados como abstract, en cuyo caso no se define el método.

Si un clase tiene algún método abstract es obligatorio que la clase sea abstract, más no viceversa.

Page 74: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA - ABSTRACT

Figura f = new Rectangulo();int s = f.obtenerSuperficie();

Page 75: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

JAVA – ABSTRACT

EJEMPLO: Ejemplo que tiene como superclase Figura; y Círculo y Cuadrado como subclases

FiguraxyobtenNombre()Area()

CirculoxyradioobtenNombre()area()

CuadradoxyladoobtenNombre()area()

Page 76: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Una interface es la definición de una colección de una o más operaciones que componen un comportamiento cohesivo (servicio) que debe ser implementado por una o más clases o componentes.

Cuando todos los métodos de una clase son abstractos y sólo hay constantes se está definiendo una interfaz.

Page 77: CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS M. en C. Cecilia Pérez Colín Email: cecypc@gmail.com

CONCEPTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

En Java no es posible tener herencia múltiple, es decir:

Clase AAtributos

Métodos

Clase BAtributos

Métodos

Clase CAtributos

Métodos