Programación Orientada a Objetos

19
Programación orientada a Programación orientada a objetos objetos Ing. Rolando Steep Quezada Martínez Ing. Rolando Steep Quezada Martínez [email protected] [email protected] Programación Básica en Java y Programación Orientada a Programación Básica en Java y Programación Orientada a Objetos Objetos

Transcript of Programación Orientada a Objetos

Page 1: Programación Orientada a Objetos

Programación orientada a objetosProgramación orientada a objetos

Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez

[email protected]@upnorte.edu.pe

Programación Básica en Java y Programación Orientada a Objetos Programación Básica en Java y Programación Orientada a Objetos

Page 2: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-22

Calidad del softwareCalidad del software

• Factores Externos

Pueden ser detectados por los usuarios

Calidad externa es la que realmente preocupa• Factores Internos

Sólo los perciben los diseñadores y desarrolladores

Medio de conseguir la calidad externa

OBJETIVO

Buenas propiedades internas Satisfacer factores externos

Page 3: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-33

Factores de calidad del softwareFactores de calidad del software

• Factores Externos

- Corrección - Eficiencia - Economía

- Robustez - Portabilidad - Integridad

- Extensibilidad - Facilidad de uso - Facilidad de reparación

- Reutilización - Funcionalidad - Facilidad de verificación

- Compatibilidad - Oportunidad

• Factores Internos

- Modularidad

- Legibilidad

Page 4: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-55

Tecnología de objetosTecnología de objetos

• Construcción de software utilizando componentes reutilizables con interfaces bien definidas

“Las aplicaciones no se construyen desde cero”

• Los objetos permiten representar los conceptos esenciales de una entidad ignorando sus propiedades accidentales

“Lo principal es la visión externa”

“Más centrado en el diseño y aplicación de técnicas de ingeniería de software”

Page 5: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-77

¿Qué es la programación orientada a ¿Qué es la programación orientada a objetos?objetos?

• Organización de los programas de manera que representan la interacción de las cosas en el mundo real

“La programación OO es una simulación de un modelo del universo”

Page 6: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-88

Resolución de problemas “con Resolución de problemas “con orientación a objetos”orientación a objetos”

• ProblemaQuiero enviar un paquete a un amigo que vive en otra ciudad

• Opcionesa) Hacerlo todo yo mismo– Descomposición en subproblemas (programación estructurada)

b) Delegar en alguien para que lo haga (p.ej. Correos)– “Realizar un encargo” (programación orientada a objetos)

• Solución orientada a objetos– Se busca un objeto capaz de enviar un paquete– Se le envía un mensaje con mi solicitud– El objeto se hace responsable de satisfacer mi solicitud– El objeto utiliza un algoritmo que yo no tengo por qué conocer

Page 7: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-99

Características de POOCaracterísticas de POO

• Abstracción• Encapsulamiento• Modularidad• Herencia• Agregación• Polimorfismo• Estándares (OMG, UML,

CORBA, ANSI, EJB, etc.)

• Componentes y Paquetes• Armonía con los procesos de

desarrollo.• Reutilización de código• Reutilización de conocimiento• Fábricas de software• Frameworks• Patrones

Page 8: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1111

ObjetosObjetos

• Los objetos son cosas• Los objetos pueden ser simples o complejos• Los objetos pueden ser reales o imaginarios

Page 9: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1212

ClasesClases

• Los objetos con estados similares y mismo comportamiento se agrupan en clases

• La definición de la clase especifica el comportamiento y los atributos de los ejemplares (objetos) de la clase

Page 10: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1313

ClasesClases

• Las definiciones de clases son abstracciones (ejemplo: Calculadora)• Ellas definen el comportamiento (ejemplo: resolver una división)• Ellas no definen cómo es logrado• Las clases son cajas negras

Implementaciones

Page 11: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1414

Clases y objetosClases y objetos

PERROraza,color...

come,ladra...

RAMBObulldoggris

come caviarladra fuerte

En el mundo real En OOP

CLASEdefinedatos ymétodos

OBJETOocupaespacioydura untiempo

Page 12: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1515

Clases, UML y JavaClases, UML y Java

public class Perro {

public String nombre ; public String raza ; public String color ;

public Perro ( String nombre ) {}

public void comer ( ) {…

}

public void ladrar ( ) {…

}

}

Perro

nombre : Stringraza : Stringcolor : String

Perro(nombre : String)comer()ladrar()

Page 13: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1717

AtributosAtributos

– Atributos de clase:• Común a todas las instancias de una clase• Sólo se inicializan una vez.

Ej.: public static int nextCodigo ;

– Atributos de instancia:• Determina el estado de los objetos• Cada objeto reserva memoria para todas las variables de

instancia

Ej.: private String nombres ;

• Declaración

[acceso] [static] [final] tipo nombreAtributo [= valor_inicial] ;

Page 14: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-1919

MétodosMétodos

• Código que “entiende” y manipula el estado de un objeto• Pueden ser llamados dentro de la clase o por otras clases• Es obligatorio indicar el tipo de retorno o void

• Declaración:[acceso] [static] void|tipoRetorno nombreMetodo ([argumentos]){

//cuerpo del metodo

[return valorRetorno;]

}

[argumentos] = tipoDato parametro1, tipoDato parametro2, …

• Invocación: Notación puntoobjReceptor.nombreMetodo(argumentos);

Page 15: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-2121

ConstructoresConstructores

• Procedimiento con el mismo nombre que la clase.

• Se invoca automáticamente cada vez que se crea un objeto de la clase.

• No pueden especificar tipos ni valores de retorno.

• Permite sobrecarga para especificar formas distintas de inicializar los objetos.

• Si no se define, el compilador crea uno por defecto sin argumentos que inicializa los atributos a los valores por defecto.

• El programador también puede definir un constructor sin argumentos.

Page 16: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-2323

Creación de objetosCreación de objetos

• Un objeto es una instancia de una clase.

• La creación de un objeto se realiza en tres pasos

– Declaración, proporcionar un nombre al objeto

Contador miContador; (null)

– Instanciación, asignar memoria al objeto

miContador = new Contador();

– Inicialización, opcionalmente se pueden proporcionar valores iniciales a las variables de instancia del objeto en la declaración o mediante CONSTRUCTORES.

Page 17: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-2424

public class A{public int at1;private int at2;…

}

• Público – los miembros que se declaran como public son accesibles en cualquier parte donde la clase sea accesible

• Protegido – miembros declarados como protected sólo accesibles por clases del mismo paquete, en la propia clase, y sus Subclases.

• Por defecto – miembros declarados sin modificador de acceso, sólo accesibles por clases del mismo paquete.

• Privado – miembros declarados como private sólo accesibles en la propia clase.

public

protectedpackage

Control de accesoControl de acceso

private

A a;A = new A() ;a.at1 = 6 //OKa.at2 = 5 //ERROR

Page 18: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-2525

PaquetesPaquetes

• Permite agrupar todas las clases relacionadas

//MiClase.javapackage miBiblioteca;public class MiClase{ //...

• Se coloca al comienzo del fichero;

• Indica que las clases públicas que contenga está accesible a cualquiera que incluya:import miBiblioteca.MiClase; o bienimport miBiblioteca.*;

• Las clases que no tienen un nombre de paquete están en el paquete por defecto (Default Package) consideradas clases amigas (friendly)

• Soporta el concepto de jerarquía de paquetes (estilo directorio)

ej: import miPaquete.miSubPaquete.MiClase;

Page 19: Programación Orientada a Objetos

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 5-5-2626

ResumenResumen

• Las clases son abstracciones que encapsulan el estado y el comportamiento de un conjunto de objetos

• Los atributos de una clase representan los estados de los objetos que deriven de esta.

• Los métodos de una clase representan el comportamiento de los objetos que deriven de esta y pueden manipular los estados de los mismos.

• Cualquier tipo que definamos en Java con una clase es un tipo no primitivo.

• Una clase puede definir varios métodos con el mismo nombre y tipo de retorno pero con diferente número y/o tipo de parámetros

• Los constructores tienen el mismo nombre de la clase y se utilizan para crear nuevas instancia de objetos.

• Los paquetes son el mecanismo para distinguir y agrupar clases según su funcionalidad y comportamiento.

• UML define un lenguaje estándar para el modelado.