Programación Orientada a Objetos

19
Programación Orientada a Objetos Programación Orientada a Objetos ¿Qué es la Programación Orientada ¿Qué es la Programación Orientada a Objetos? a Objetos? Es la organización de los programas de manera que representan la interacción de las cosas en el mundo real. “La Programación Orientada a Objetos es una simulación de un modelo del universo”

Transcript of Programación Orientada a Objetos

1

Programación Orientada a Objetos

Programación Orientada a Objetos

¿Qué es la Programación Orientada ¿Qué es la Programación Orientada a Objetos?a Objetos?jj

• Es la organización de los programas de manera que representan la

interacción de las cosas en el mundo real.

• “La Programación Orientada a Objetos es una simulación de un modelo del

universo”

2

¿Qué es la Programación Orientada ¿Qué es la Programación Orientada a Objetos?a Objetos?

Los especialistas ven la P.O.O. desde dos puntos de vista

• El primero sostiene que la POO es una nueva forma de programar. Un nuevoparadigma.

• El segundo sostiene que la POO es simplemente una evolución de técnicasEl segundo sostiene que la POO es simplemente una evolución de técnicasde programación ya existentes (tipos de dato abstractos)

Cómo se piensa en objetosCómo se piensa en objetos

• Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vidaj y preal.

• Por ejemplo vamos a pensar en un carro para tratar de modelizarlo en unesquema de POO. Diríamos que el carro es el elemento principal que tieneuna serie de características, como podrían ser el color, el modelo o la marca.Además tiene una serie de funcionalidades asociadas, como pueden serponerse en marcha, parar o estacionar

• En un esquema POO el carro sería el objeto las propiedades o atributos• En un esquema POO el carro sería el objeto, las propiedades o atributosserían las características como el color o el modelo y los métodos serían lasfuncionalidades asociadas como ponerse en marcha o parar.

3

¿Qué es una Clase? ¿Qué es una Clase? • Conjunto de objetos con propiedades y comportamientos similares.j j p p y p• Una Clase esta está asociada de:

Atributos: Se utilizan para describir, identificar o informar el estado de un objeto.Métodos: Definen el comportamiento del objeto.

• Ejemplo:j pPodemos referirnos a la clase “coche”

¿Qué es una Clase? ¿Qué es una Clase? Luis Joyanes Aguilary g

• “Una Clase es un tipo definido por el usuario que determina laspropiedades de los datos y las operaciones asociadas con este tipo”.

• “La Clase es simplemente un modelo que se utiliza para describiruno o más objetos del mismo tipo”

Llacua – Vasquez• “Es una entidad que tiene Atributos(datos) y Procesos(métodos)

l i d l ó it f i i t d l i L t ib trelacionados al propósito y funcionamiento de la misma. Los atributosidentifican las características de la clase y los procesos establecen sucomportamiento”

4

¿Qué es un Objeto?¿Qué es un Objeto?• Es una entidad única con la que se representa cada una de las instancias de unaq p

clase, con su propio estado.• Se pueden crear tantos objetos de una clase como se quieran.

Ejemplo:

¿Qué es un Objeto?¿Qué es un Objeto?•Un objeto es una abstracción de una entidad del mundo real.j

•Toda interacción con el mundo externo es por medio de una interfase.

5

Clases y ObjetosClases y Objetos• La clase define el Tipo de Dato (atributos y métodos) que serán comunes a todasp ( y ) q

las instancias (objetos) de la clase.clase cliente

Objetos de la clase ClienteAtributosNombreEdad

Objeto 1Atributos:

Pepe22

Objeto 2Atributos:

María18

MétodosobtenerEdad()modificarEdad()

22 18 …

Ejemplos de Clases y ObjetosEjemplos de Clases y Objetos

6

Ejemplos de Clases y ObjetosEjemplos de Clases y Objetos

• Definir las siguientes clases y definir objetos para cada una:g y j pEjm.

• Computadora• Persona• Celular• Comida• Vegetal• Factura• Electrodoméstico• Mueble• Curso• Estudiante

Conceptos fundamentales en el Conceptos fundamentales en el Modelo de ObjetosModelo de Objetos

• Hay cuatro conceptos fundamentales en el paradigma de Orientación a• Hay cuatro conceptos fundamentales en el paradigma de Orientación aObjetos, estos son:

7

AbstracciónAbstracción• Consiste en representar las características esenciales de un objeto,p j

olvidándose de otras no esenciales.

• Se define como la capacidad para examinar algo sin preocuparse de susdetalles internos.

• Definir una abstracción significa describir una entidad del mundo real, noimporta lo compleja que sea y luego utilizarla en la descripción de un programa.

• Una clase es una abstracción de un grupo de objetos, que tienen la posibilidadde realizar una serie de operaciones.

AbstracciónAbstracción•Mediante la abstracción la mente humana modeliza la realidad en forma de objetos.Para ello busca parecidos entre la realidad y la posible implementación de objetos delPara ello busca parecidos entre la realidad y la posible implementación de objetos delprograma que simulen el funcionamiento de los objetos reales.

•Los seres humanos no pensamos en las cosas como un conjunto de cosas menores;por ejemplo, no vemos un cuerpo humano como un conjunto de células.

•Los humanos entendemos la realidad como objetos con comportamientos biendefinidos. No necesitamos conocer los detalles de porqué ni cómo funcionan lascosas; simplemente solicitamos determinadas acciones en espera de una respuesta.p p p

8

EncapsulamientoEncapsulamiento• Cada clase exhibe un determinado comportamiento, pero cómo lo consigue queda

oculto o encapsulado en el interior de la clase.

• Con el encapsulado de los datos se consigue que las personas que utilicen unobjeto sólo tengan que comprender su interfaz, olvidándose de cómo estáimplementada, y en definitiva, reduciendo la complejidad de utilización.

• “La abstracción y el encapsulamiento son conceptos complementarios: laabstracción se centra en el comportamiento observable de un objeto, mientras queel encapsulamiento se centra en la implementación que da lugar a esecomportamiento” (Booch).

• Ventaja: permite que la implementación de un objeto se pueda cambiar sin afectara las aplicaciones que lo utilizan.

• El acceso a los datos se realiza a travésde los métodos de la Interfaz.

EncapsulamientoEncapsulamiento• Consiste en reunir varias cosas para ser manipuladas como una sola unidad.p p• Por ejemplo al definir variables de tipo Registro estamos encapsulando los

campos del registro.Al definir una clase estamos encapsulando los atributos y los métodos

• El encapsulamiento permite a los objetos elegir qué información es publicada yqué información es ocultada al resto de los objetos. Para ello los objetos suelen

t ét d i t f úbli t ib t d tpresentar sus métodos como interfaces públicas y sus atributos como datosprivados e inaccesibles desde otros objetos.

9

HerenciaHerencia• La herencia es el mecanismo que permite definir una clase (subclase) a partir de otra

clase (superclase), de manera que la subclase hereda la estructura (estado) de lal t é d l i bl h d l t i t t é d lsuperclase a través de las variables, y hereda el comportamiento a través de los

métodos.

:Figura

:Rectangulo:Circulo g

Mediante la herencia una clase hija puede tomar determinadas propiedades de una clasepadre. Así se simplifican los diseños y se evita la duplicación de código al no tener quevolver a codificar métodos ya implementados.Al acto de tomar propiedades de una clase padre se denomina heredar.

PolimorfismoPolimorfismo

• Se refiere a la capacidad de que objetos de tipos diferentes respondan al mismomensaje con su propio comportamiento.

• Múltiples formas de ejecutar un mismo método común y que pertenecen a variasclases.

:Figura calcularArea()

:Rectangulo:CirculocalcularArea() calcularArea()

10

PolimorfismoPolimorfismo

• Polimorfismo quiere decir "un objeto y muchas formas".q j y

• Esta propiedad permite que un objeto presente diferentescomportamientos en función del contexto en que se encuentre.

• Por ejemplo un método puede presentar diferentes implementacionesen función de los argumentos que recibe, recibir diferentes númerosde parámetros para realizar una misma operación y realizarde parámetros para realizar una misma operación, y realizardiferentes acciones dependiendo del nivel de abstracción en que seallamado.

Ventajas de la POO.Ventajas de la POO.

• Reutilización de código.• Extensibilidad de código.• Facilidad de mantenimiento del software.• Portabilidad.• Rapidez de Desarrollo de software.• Facilita el trabajo en equipo.• Más fáciles de entender porque se usa abstracciones cercanas al mundo real.p q

11

Implementación de ClasesImplementación de Clases

NotaciónNotación UML UML parapara ClasesClases

:Circulo

Circulo

radio

calcularArea()calcularPerimetro()

Atributos

Métodos

Clase

a) Forma Expandida b) Forma Abreviada

12

Sintaxis de ClaseSintaxis de Clase• Sintaxis:

• Ejemplo:

class NombreClase{

//Definición de atributos y métodos…

}

class Circulo{

//Definición de atributos y métodos…

}

AtributosAtributos• Los atributos en una clase pueden ser:p

– Atributos de clase:Son comunes a todas las instancias de la clase, por tanto el valor es el mismopara todos los objetos.Ejm:

Contador de instancias de una clase.

– Atributos de instancia:Determinan el estado de los objetos. Cada objeto puede tener valoresdiferentes para estos atributos.Ejm:

Nombre y Edad de cada Objeto Cliente.

13

Sintaxis de AtributoSintaxis de Atributo• Sintaxis:

El tipo de dato puede ser:- Tipo Primitivo: int, float, double, char, String, etc.- Tipo Compuesto: String, referencia a objetos de otra clase.

• Ejemplo:

tipoDato nombVariable;

j p

class Circulo{

double radio;…

}

MétodosMétodos• Son las operaciones (funciones) que se le podrán aplicar a los objetos.p ( ) q p p j• Típicamente se utilizan para:

– Obtener el estado del objeto: obtener algún atributo en particular (métodosgetter).

– Modificar el estado del objeto: modificar algún atributo en particular(métodos setter).

Ejm: obtenerEdad, modificarEdad, etc.

• Son funciones, por tanto: pueden retornar valores y recibir parámetros.

14

Sintaxis de MétodosSintaxis de Métodos• Sintaxis:

tipoRetorno nombMétodo([Lista Parámetros]){

//Cuerpo del método…[return valorRetorno;]

}

TipoRetorno:Si el método retorna algún valor, se evalúa el tipo de dato al que pertenece(int,float, String, etc), y se hace uso de la instrucción return.Si el método no retorna valor, el tipoRetorno debe ser void y por lo tanto ya nose usa la instrucción return.

Sintaxis de MétodoSintaxis de Método• Método con parámetros y retorno.p y

• Método con parámetros y sin retorno

double calcularArea(double radio){

double area;area= radio*radio*3.1415;return area;

}

p y

void calcularArea(double radio){

double area;area= radio*radio*3.1415;System.out.println(“El Area es: ” + area);

}

15

Sintaxis de MétodoSintaxis de Método• Método sin parámetros y con retorno.p y

double calcularNumAleatorio(){

double n=0;n = Math.random()*10;return n;

}

• Método sin parámetros y sin retorno.

void salir(){

System.out.println(“Fin del programa…”);}

El proceso para crear objetos tiene dos etapas:

Ciclo de Vida de los ObjetosCiclo de Vida de los Objetosp p j p

• Declaración:Los objetos se declaran indicando el nombre de la clase y después el nombre delobjeto.

• Creación:

Circulo c1;NombClase nombObj; Ejm:

El objeto se crea con la palabra reservada new y una llamada al constructor.

c1= new Circulo();nombObj= new NombConstructor();Ejm:

16

• Ambos pasos (declaración de la referencia, y creación del objeto) se pueden

Ciclo de Vida de los ObjetosCiclo de Vida de los Objetosp ( y j ) p

realizar en la misma línea:

Circulo c1 = new Circulo();Clase

Operador que crea un nuevo Objeto

ConstructorObjeto (Variable de referencia)

Nota:Los objetos en Java no necesitan destrucción explícita por parte delprogramador.El lenguaje tiene implementado un sistema de recolección de basura (garbagecollection).

¿Qué es un Constructor?¿Qué es un Constructor?• Un constructor es un método especial que se llama automáticamente cuando sep q

crea un Objeto.• Tiene el mismo nombre que la clase.• Pueden recibir parámetros pero no retornan ningún valor.• Se utilizan para inicializar los atributos de la clase.• Pueden sobrecargarse: Se pueden definir varios constructores los cuales deben

diferenciarse en los parámetros.

Ejm:- Cliente()- Cliente(nombre)- Cliente(nombre, edad)

17

Sintaxis del ConstructorSintaxis del Constructor

Constructor por defecto.p• Sintaxis:

• Ejemplo:

class NombClase{

NombClase() //Constructor{}

}

class Circuloclass Circulo{

double radio;Circulo() //Constructor vacío{

radio=0;}

}

Sintaxis del ConstructorSintaxis del Constructor

Constructor con parámetros.p• Sintaxis:

• Ejemplo:

class NombClase{

NombClase(ListaParametros) //Constructor{}

}

class Circuloclass Circulo{

double radio;Circulo(double r) //Constructor con parámetro{

radio = r;}

}

18

class Circulo{

double radio; //Atributo

ImplementandoImplementando unauna ClaseClase JavaJava

Circulo( ) //Constructor por defecto{

radio=0; }Circulo ( double r ) //Constructor con 1 parámetro{

radio=r;}//Métodos para Calcular el Área y Perímetrodouble calcularArea( )

Sobrecarga de Métodos

Ci l Cldouble calcularArea( ){

return 3.1415*radio*radio;}double calcularPerimetro( ) {

return 2*3.1415*radio;}

}

Circulo

radio

calcularArea()calcularPerimetro()

Atributos

Métodos

Clase

Envío de MensajesEnvío de Mensajes• Un mensaje es una petición para solicitar una llamada a una función quej p p q

pertenece a un objeto en particular.• Todos los objetos de una determinada clase pueden recibir los mismos mensajes.• Cada mensaje tiene tres componentes:

– El objeto destinatario del mensaje– El nombre del método a ejecutar– Los parámetros (si existen) del método

Sintaxis:

Ejemplo:c1.calcularArea(); c1.modificarRadio(10);

objeto.método() objeto.método(Argumentos)

19

Instanciación de ClasesInstanciación de Clases• Tipos:p

- Implícita:Se instancia en forma directa al Constructor de la Clase.

Ejm:

- Explícita:

new Circulo()

pSe especifica de que clase se va a instanciar el Objeto

Ejm:

Circulo c = new Circulo()

InstanciandoInstanciando clasesclases en Javaen Javapublic class PruebaCirculo{

public static void main(String[ ] args)-Llamada al constructorUn constr ctor crea epublic static void main(String[ ] args)

{//Declaración de un Objeto Circulo c1;//Creación del Objetoc1 = new Circulo(); //Invoca al Constructor por defecto//Declaración y creación de un Objeto en una sola lineaCirculo c2 = new Circulo(10); //Invoca al Constructor con 1 parámetro

-Un constructor crea einicializa instancias deuna clase.

//Imprimir Resultado en pantallaSystem.out.println(" Area c1 : “ + c1.calcularArea());System.out.println(" Perimetro c1 : “ + c1.calcularPerimetro());System.out.println(" Area c2 : “ + c2.calcularArea());System.out.println(" Perimetro c2 : “ + c2.calcularPerimetro());

}}

Invoca al métodode la Clase Circulo