tema1

30
Tema 1: Introducción a la Programación Orientada a Objetos Profesor: Iván Jiménez Utiel

Upload: ivan-jimenez-labs

Post on 24-Jan-2016

212 views

Category:

Documents


0 download

DESCRIPTION

Tema

TRANSCRIPT

Page 1: Tema1

Tema 1:Introducción a la ProgramaciónOrientada a ObjetosProfesor: Iván Jiménez Utiel

www.princexml.com
Prince - Non-commercial License
This document was created with Prince, a great way of getting web content onto paper.
Page 2: Tema1

Introducción• Un paradigma es una forma de afrontar la construcción de código software

• Distintos paradigmas: POO, Estructurado, Lógico, Funcional, ...

Programación Orientada a Objetos (POO)

• Facilidad de diseño y relación con el mundo real

• Reusabilidad y facilidad de mantenimiento

• Sistemas más complejos

◦ Abastracción

◦ Trabajo en equipo

• Del lenguaje máquina hacia el mundo real

• Resuevle problema complicados -> no está pensado para tareas sencillas

Page 3: Tema1

Conceptos esenciales de la POO• Abstracción

◦ Un coche en sí es una idea abstracta -> hasta que concretas color, marca, modelo, etc.

• Encapsulación

◦ Es la forma que tienes de ocultar objetos y clases.

• Herencia

◦ Es la forma de reutilizar código sin tener que reescribrilo otra vez

• Polimorfismo

◦ Existen objetos que pueden actuar de una forma u otra, dependiendo de la situación.

Page 4: Tema1

Lenguaje UML (Unified ModelingLanguage)

• Lenguaje unificado de modelado

• Sirve para describir el análisis y diseño de la aplicación

• Especificación de diagramas UML 2.0 (13 tipos de diagramas)

Page 5: Tema1
Page 6: Tema1

Programación Orientada a Objetos• Objetos: elemenos que interactúan entre sí para conseguir un fin

◦ Son autónomos

◦ Con funcionalidad concreta definica

◦ Instancias de una clase

• Clases:

◦ Especificación de un conjunto de elementos.

• Todo objeto pertenece a una clase

Page 7: Tema1

Objetos y Clases

Page 8: Tema1

Objetos y Clases• Los objetos tienen propiedades que los distinguen

◦ Comunes a todos los de su clase

◦ Propias de cada uno

• Los objetos interactúan entre sí por medio de mensajes

• Los objetos representan los coceptos fundamentales del programa, integrando su funcionalidad.

Page 9: Tema1

Objetos y clases• Clases

◦ Representan conceptos o entidades significativas de un problema

◦ Se peuden ver como plantillas para definir elementos (objetos)

◦ Pueden estar directamente relacionadas unas con otras

• Objetos

◦ Elementos con comportamiento definido en la clase y estado concreto

◦ Instancia de clase

◦ Interactúan por medio de mensajes

Page 10: Tema1

Comportamiento y EstadoMétodos y atributos

• Comportamiento: describe los servicios que proporciona una clase (lo que se puede hacer conella). Son los métodos.

◦ El comportamiento distingue los objetos de una clase con los de otra.

• Estado: Describe la situación interna del objeto. Existen varias formas de definir distintos estados.Son los atributos.

◦ El estado distingue a los objetos de la misma clase -> cada uno tiene su estado.

◦ Pueden ser

▪ Tipos básicos (int, boolean, short, etc.)

▪ Arrays

▪ Otros objetos

Page 11: Tema1

Atributos y varibales• Atributo de instancia: definido para las instancias de una clase -> copia del objeto.

• Atributo de clase: definido en la clase -> cpia por clase (común para todos los objetos):

◦ static int numero = 5;

• Variable local: definida dentro del cuerpo de un método. De ámbito restringido.

Page 12: Tema1

Métodos1 tipo_retorno nombre método (parámetros) {2 código_método3 }

• Definen el comportamiento de los objetos de una clase

• Devuelven un resultado

• Pueden necesitar parámetros

Métodos habituales

• Constructor

◦ Se ejecuta al crear un objeto

◦ Sirve para inicializar un objeto al crearlo

◦ Existe sobrecarga (distintos parámetros) para cualquier método.

◦ Coincide con el nombre de la clase y no devuelve nada por definición -> no se indica el tipode retorno

◦ Aunque no se escriba, se crea uno vacío por defecto.

• Destructor

◦ Se ejecuta al destruir el objeto y no se suele utilizar (Garbage Collector:gc)

Page 13: Tema1

◦ Se tiene que sobreescribir y no devuelve nada: void finalize()

Page 14: Tema1

Métodos habituales• Método main o punto de entrada:

◦ Método que se invoca al comienzo de un programa

◦ Al menos, una clase del programa debe tenerlo (clase principal)

◦ Sólo ejeucta el de la clase principal

◦ Varias clases pueden tener un punto de netrada, pero sólo se ejecutará el de una de ellas.public static void main(String[] args)

Uso de objetos e interacción

• Los objetos son instanciaciones de las clases. Es necesario realizar dicha instancicación parapoder utilizarlos.

• Se comunican entre sí mediante paso de mensajes.

• La invocación de los métodos es la manera en la que se realiza el paso de mensajes.

Page 15: Tema1

Declaración de una clase1 public class NombreClase {2 //Atributos3 tipo atributo1;4 tipo atributo2;5 ...67 //Métodos8 tSalida nombreMetodo1 (params) {9 //Contenido Método1

10 }1112 tSalida nombreMetodo2 (params) {13 //Contenido Método214 }15 ...16 }

Page 16: Tema1

Declaración de una clasepublic class Gato {

//Atributos

String nombre;int edad;

//Métodos

Gato (String nombre) {this.nombre = nombre;

}

void maullar() {System.out.println("Miau");

}

public static void main (String[] args){Gato miGato = new Gato();miGato.maullar();

}}

Page 17: Tema1

Creación de objetos• Para poder usar un objeto hay que crearlo:

clase identificador = new clase();

Gato miGato = new Gato("Missy");

Operador .

• El operador . (punto) permite acceder a los miembros de una clase.

• Se usa tanto para atributos como para métodos.

◦ Gato miGato = new Gato("Missy");

◦ miGato.edad = 1;

◦ miGato.maullar();

Page 18: Tema1

Operador thisclass Gato {

String nombre;

Gato (String nombre){this.nombre = nombre;

}

}

• Para referirse a un objeto desde sí mismo, se usa la palabra reservada this

• Representa la referencia del objeto actual.

• Se utiliza implícitamente para hacer referencia a los atributos y métodos.

• Por conveniencia, aunque no fuera necesario, se suele utilizar siempre para los atritubos de clase.

Page 19: Tema1

Uso de Objetos• Una vez creado (instanciado) un objeto, podemos enviarle mensajes y modificar su estado.

◦ Invocando métodos

◦ Accediendo a sus atributos (no se debe hacer):

▪ Gato miGato = new Gato("Missy");

▪ miGato.edad = 1;

▪ miGato.maullar();

Acceso directo a atributos

• El acceso directo a atributos no es recomendable porque revela la estructura interna del objeto.

◦ Los método definin cómo se debe usar un objeto. Permitir el acceso a atributos es dar víalibre a manipular su estado sin control.

• En su lugar se deben definir métodos que, de forma genérica, modifiquen el esado de acuerdo aconsideraciones semánticas.

• Se debe prohibir el acceso a los atributos.

Page 20: Tema1

Encapsulación• Existen distintos niveles de visibilidad: protected, public, private, default (no indicar nada)

• De esta forma se controla qué cosas son modificables y cómo se pueden modificar.

Page 21: Tema1

Visibilidadpublic class Coche {

private String color;

public void ponColor(color) {this.color = color;

}

public static void main(String[] args){Coche c = new Coche();c.ponColor("ROJO");c.color = "VERDE"; //Qué ocurre con esta llamada?

}}

• La visibilidad se puede indicar usando las palabras reservadas: public, private y protected alcomienzo de una declaración:

• si no se indica la visibilidad, por defecto:

◦ Atributos son "private"

◦ Métodos són "public"

◦ Clases son "protected"

Page 22: Tema1

Ejercicio• Utilizando la clase Gato, crea un objeto de la clase Gato y haz que su nombre contenta el valor

"Missy".

• Imprime el atributo del nombre.

• Crea el método dameNombre de la clase Gato que devuelva el atributo nombre y llámalo desde elmain.

Page 23: Tema1

Ejercicio (II)• Crea el constructor para la clase Gato de manera que reciba un nombre y una edad y asigne esos

valores a los atributos correspondientes.

• Crea un objeto de la clase Gato con el nuevo constructor.

Page 24: Tema1

Sobrecarga de métodos• Varias declaraciones de un método con el mismo nombre

• Distintas implementaciones en función de los parámetros recibidos

• Se puede aplicar al constructor

• Métodos con el mismo nombre pero con distintos parámetros de entrada.

• El tipo de retorno puede cambiar

◦ Sólo los parámetros de entrada son distintos

◦ No puede haber dos métodos con el mismo nombre, los mismo parámetros de entrada perodistinto tipo de salida.

Page 25: Tema1

Ejemplo de Sobrecargaclass Gato {

String nombre;int edad;

Gato(String nombre, int edad){this.nombre = nombre;this.edad = edad;

}

Gato(String nombre){this.nombre = nombre;this.edad = 0;

}}

• Ejercicio: crear un método maulla que imprima Miau y otra versión del mismo método con elmismo nombre (sobrecarga) que imprima el parámetro de tipo String que reciba de entrada.

Page 26: Tema1

Métodos y variables estáticos de clase• Muchas veces nos hacen falta métodos que no necesiten de un objeto para ser llamados: ej.

Math.sqrt(4,2);

• Tienen el modificador static delante de la declaración.

◦ static tipo nombreMetodo(param) { }

◦ Ej. static int edad;

• El modificador static en variables o atributos sirve para compartir información entre todas lasinstancias de la clase, son llamadas variables de clase. Se asocia más a la clase que al objeto.

• Mismo funcionamiento para métodos static

• La JVM llama al método sin crear el objeto.

• El método main() es estático -> si fuera un método de instancia, no podría llamarse.

• Suele ser más eficiente llamar a atributos y métodos estáticos.

• Idea final: si queremos atributos o métodos que no tengan que instanciarse, utilizar static

• Limitaciones: en los métodos no podremos utilizar ni this, ni super.

Page 27: Tema1

Modificador final• Para definir constantes -> se inicializan un sola vez.

• Se inicializan al ser declaradas o en el constructor.

• Si la constante es común para todos los objetos, se utiliza una variable de clase (static).

• Se utilizan mayúsuclas para el nombre:

◦ Ej: static public final double PI = 3.1415;

Page 28: Tema1

Ejemplo con finalpublic class Incremento {

private int total = 0;

private final int INCREMENTO;

public Incremento(int valor){INCREMENTO = valor;INCREMENTO = 3; } // Qué ocurriría aquí?

 }

public void anyadirIncremento() {total += INCREMENTO;

}}

Page 29: Tema1

Paquetes y Módulos• El código de una clase pública se encuentra en un archivo .java

• El nombre del archivo coincide con el nombre de la clase

• Excepción:

◦ En un archivo podría haber varias clases, sólo de una de ellas es public y el resto auxiliares.

• Los paquetes contienen a un conjunto de clases relacionadas

• Los paquetes ayudan a manejar la complejidad de las aplicaciones

• Facilitan la reutilización del SW permitiendo a los programas el importar clases de otros paquetes

• En Java existen tres tipos de módulos: paquetes, clases y métodos.

• Java provee un API (jdk 1.6/1.7) con diversos módulos.

Page 30: Tema1

Paquetespackage ejemplo;public class {

...}

• Puede haber más de una clase en el mismo fichero fuente -> pero sólo una puede ser pública ydebe coincidir en nombre con el fichero

• Lo habitual suele ser tener una clase por cada fichero fuente

• El paquete al que pertenece una clase se indica al comienzo del fichero

• Una clase sólo puede pertenecer a un paquete

• Se pueden organizar los paquetes de forma jerárquica: `package ejemplo.objetos;

• Para usar una clase que está en distinto paquete:

◦ Se puede importar un conjunto de clases: import ejemplo.*;

◦ O una clase concreta: import ejemplo.clase;