FPJUCE - Capitulo2

42
Ing. Giovanny Moncayo Ing. Giovanny Moncayo [email protected] [email protected] [email protected] [email protected] 095 026 736 095 026 736 081 869 725 081 869 725 CAPÍTULO II CAPÍTULO II PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA CON JAVA

description

Temas tratados en el Capítulo 2 del Curso de Fundamentos de Programación en Java - PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA. Unidad de Educación Contínua - UNIDEC Universidad Central del Ecuador Ing. Giovanny Moncayo Unda

Transcript of FPJUCE - Capitulo2

Page 1: FPJUCE - Capitulo2

Ing. Giovanny MoncayoIng. Giovanny Moncayo

[email protected]@[email protected]@gmail.com

095 026 736095 026 736081 869 725081 869 725

CAPÍTULO IICAPÍTULO IIPROGRAMACIÓN ORIENTADA A PROGRAMACIÓN ORIENTADA A

OBJETOS CON JAVAOBJETOS CON JAVA

Page 2: FPJUCE - Capitulo2

En esta presentación

Introducción a la POO (Programación Orientada a Objetos)

Conceptos Básicos de Programación en Java Qué son los Objetos? Unified Modeling Language – UML Descripción de una Clase Introducción a la Clase System

Page 3: FPJUCE - Capitulo2

Palabras clave

Objeto Clase Atributo Método – Accesores, Mutadores,

Personalizados Argumentos de un método Valores de retorno en un método Constructor

Page 4: FPJUCE - Capitulo2

Palabras clave - Continuación

Modificadores de acceso Relaciones entre Objetos UML Instancia de una Clase Herencia Encapsulación Garbage Collector – Recolector de Basura de

Java

Page 5: FPJUCE - Capitulo2

Introducción a la Programación Orientada a Objetos

La Programación Orientada a Objetos es muy diferente de la Programación Procedimental.

PROGRAMACIÓN PROCEDIMENTAL• Se basa en una secuencia de instrucciones que se

ejecutan una tras otra.• Difícil de mantener.

PROGRAMACIÓN ORIENTADA A OBJETOS• Se basa en una colección de Objetos que

interactúan entre sí a través de mensajes (métodos).• Los Objetos tienen datos e instrucciones.• El código puede ser reutilizado – Fácil de mantener.

Page 6: FPJUCE - Capitulo2

Conceptos Básicos de Programación en Java

Objeto: Contiene datos e instrucciones para procesar datos (Se encuentra en la memoria HEAP)

Clase: Representación física de un Objeto (estructura, molde o esqueleto).

Atributo: Describe el estado de un objeto, se llaman datos (Lo que conoce el objeto ó lo que se conoce del objeto).

Tipo de Dato: Describe el tipo de Información que almacena un atributo. Ej: String, int, double, etc.

Page 7: FPJUCE - Capitulo2

Conceptos Básicos de Programación en Java

Método: Es un grupo de instrucciones Comportamiento: Describe lo que el objeto

puede hacer Herencia: Capacidad de los objetos para

derivar atributos y métodos de otros objetos más generales.

Encapsulación: Ocultación de la información que almacenan los objetos. (Atributos privados y acceso a los mismos a través de Métodos públicos)

Page 8: FPJUCE - Capitulo2

Qué son los Objetos? INTRODUCCIÓN

• Cualquier cosa Tangible o Abstracta que es relevante.

• Pueden tener Atributos y Métodos.

• Los Atributos describen las características del Objeto, lo que conoce ó lo que se conoce de él.

• Los Métodos describen definen su comportamiento, lo que el Objeto puede hacer.

Page 9: FPJUCE - Capitulo2

Qué son los Objetos?

Page 10: FPJUCE - Capitulo2

Qué son los Objetos? CLASIFICACIÓN DE LOS OBJETOS

Objetos que interactúan con el usuario Ej: Elementos de una GUI

Objetos del entorno Operativo Ej: Computador, Servidor, etc.

Objetos relacionados a tareas específicas Ej: Documentos, Sonido, Audio, etc.

Page 11: FPJUCE - Capitulo2

Qué son los Objetos? CÓMO SE DEFINE UN OBJETO

• Lo primero que se debe tener en cuenta es: Cuáles son los Atributos del Objeto. Cuáles son los Métodos del Objeto.

• A través de una clase se pueden definir un sin número de Objetos.

• Cada Objeto definido es una “Instancia de la Clase”.

Page 12: FPJUCE - Capitulo2

Qué son los Objetos? CREACIÓN DE UN OBJETO

• Un Objeto es creado a través del constructor, utilizando el operador new.

• El constructor contiene las instrucciones para la creación del Objeto.

• Todos los Objetos se almacenan en el HEAP.

public Cliente(String nombreCliente, int edadCliente){

nombreCliente = nombre;

edad = edadCliente; }

Page 13: FPJUCE - Capitulo2

Qué son los Objetos? INTERACIÓN – OPERACIÓN CON OBJETOS

• Un Objeto interactúa a través de sus métodos.• Los métodos son usados para enviar y recibir

mensajes entre los objetos.• Los Objetos obtienen información de otros Objetos

por medio de los Métodos Accesores (GET).• Los Objetos alteran la información de otros Objetos

por medio de los Métodos Mutadores (SET).• El operador para acceder a los métodos de un

Objetos es el “Punto ( . )”

Page 14: FPJUCE - Capitulo2

Qué son los Objetos? LA ENCAPSULACIÓN

• Significa:• Ocultación de la Información • Protección de datos

• Se restringe el acceso a la información del Objeto (sus Atributos).

• En java se implementa a través de los modificadores de acceso public, private y protected.

• Para encapsular un Objeto, los atributos de la clase deben ser definidos como privados y se debe proporcionar acceso a cada uno de ellos a través de métodos públicos (get/set – mutadores/accesores). Esto es casi un JavaBean, sólo falta definir el constructor de la clase.

Page 15: FPJUCE - Capitulo2

Qué son los Objetos? LA ENCAPSULACIÓN – MODIFICADORES DE

ACCESO

Page 16: FPJUCE - Capitulo2

Qué son los Objetos? RELACIONES ENTRE OBJETOS

• Asociación: Un objeto tiene una referencia a otro Objeto, o lo que es lo mismo, crea una Instancia de otro Objeto.

• Dependencia: Un objeto no puede existir sin la existencia previa de otro Objeto.

• Generalización: Un Objeto deriva Atributos y Comportamientos de otro Objeto (Herencia).

Page 17: FPJUCE - Capitulo2

Qué son los Objetos? HERENCIA

• Es uno de los conceptos más importantes de la POO.• Consiste en la capacidad de crear clases que reutilicen

el código de clases más generales (atributos y métodos), y que al mismo tiempo puedan añadir atributos y métodos propios.

• Ventajas de la Herencia:• Reutilización del código.• Mantenimiento de las aplicaciones (Escalabilidad).

• En Java NO existe herencia múltiple. Sólo se puede heredar de una clase.

• SI es posible herencia multinivel (Varios niveles de herencia).

• Una misma clase, puede ser heredada por varias clases.

Page 18: FPJUCE - Capitulo2

Qué son los Objetos? HERENCIA

• Para hacer herencia, se usa la palabra reservada extends en la clase Hija.

• La Herencia entre dos clases establece una relación “es un”, en el ejemplo, un Profesor es una Persona

Page 19: FPJUCE - Capitulo2

Qué son los Objetos? DESTRUCCIÓN - GARBAGE COLLECTOR

• En Java NO es posible saber en qué momento exacto un Objeto será destruido, sólo es posible determinar a partir de qué momento esto puede suceder (cuando se elimine la última referencia al mismo)

• El Garbage Collector es una aplicación que forma parte de la JVM, la cual se encarga de liberar de la memoria los objetos “No Referenciados”.

• Si un Objeto es asignado a null, éste pierde su referencia y es marcado como “basura”.

• El Garbage Collector no es controlable, lo maneja directamente el Sistema Operativo.

Page 20: FPJUCE - Capitulo2

Qué son los Objetos? DESTRUCCIÓN - GARBAGE COLLECTOR

• Se puede hacer la llamada al Garbage Collector a través de la siguiente línea de código:

System.gc();

• Esta llamada hará que el Recolector de Basura empiece a competir por tiempo de CPU, ya que como se dijo anteriormente, es el Sistema Operativo quién lo controla, y se ejecutará cada vez que el HEAP esté próximo a llenarse.

Page 21: FPJUCE - Capitulo2

Unified Modeling Language – UMLLenguaje utilizado para modelar Programas

Orientados a Objetos.Consiste de un conjunto de símbolos para

representar Clases, las relaciones entre ellas, sus niveles de acceso y su estado.

Existen diferentes tipos de diagramas UML, entre ellos los más utilizados son: Casos de Uso, Secuencia y Clases.

Otros tipos de diagramas UML son: Colaboración, Actividad, Componentes, Despliegue, etc.

Page 22: FPJUCE - Capitulo2

UML – Diagrama de Clases Permite modelar:

Los Atributos y Comportamientos de una Clase.Las relaciones entre clases.

Page 23: FPJUCE - Capitulo2

UML – Símbolos del Diagrama de Clases

Las Clases se representan a través de Rectángulos, divididos en tres zonas: La primera para el nombre de la Clase, la segunda para los Atributos y la tercera para los Métodos o Comportamientos.

Las líneas describen las relaciones entre las Clases u Objetos (Asociación, Dependencia ó Generalización)

Page 24: FPJUCE - Capitulo2

UML – Símbolos del Diagrama de Clases

Algunos símbolos especiales describen el nivel de acceso, estos son:

Page 25: FPJUCE - Capitulo2

UML – Características de un Diagrama de Clases

Los Atributos por lo general serán privados, seguidos del Tipo de Dato y en algunos casos de una inicialización Explícita.

Los Métodos por lo general serán públicos, seguidos de la lista de argumentos y del Tipo de Retorno.

Los métodos dentro del diagrama UML deben ser ordenados de la siguiente manera:1. Constructor2. Métodos get/set 3. Métodos personalizados

Page 26: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LA CLASE

Una clase es definida utilizando la palabra reservada class y el modificador de acceso public

El nombre del archivo .java debe tener exactamente el mismo nombre de la clase.

Un mismo archivo .java puede contener más de una clase, pero sólo una de ellas podrá ser pública.

Varias clases públicas deben ser almacenadas en archivos separados.

Una clase NO es un Objeto, pero es usada para CREAR Objetos a través del operador new

Page 27: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LA CLASE

La firma para la definición de una clase:[public] class NombreClase

{

// Atributos

// Métodos

}

Lo que está entre [ ] puede obviarse, en ese caso, la clase tiene acceso por default.

Las clases no pueden ser private ni protected.

Page 28: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LA CLASE

El NombreClase, debe cumplir con las siguientes características: Debe ser un sustantivo. La primera letra debe ser mayúscula y el resto

minúsculas. Se pueden mezclar varios sustantivos, iniciando

cada uno de ellos con una letra mayúscula, lo que se conoce como CamelCase.

De preferencia evitar colocar caracteres raros dentro del Nombre de la Clase.

Page 29: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS ATRIBUTOS

Los Atributos en una Clase, se representan a través de Variables ó Identificadores, y son los que definen el Estado de un Objeto.

Por lo general, se inicializan en el Constructor de la Clase.

Cada atributo debe estar asociado a un Tipo de Dato de acuerdo a la información que almacena, y pueden ser: Tipos de Dato Primitivos: byte, short, int, long,

float, double, char y boolean Tipos de Dato Referencia: Cualquier clase a la que

se haga “Referencia”. Ej: String

Page 30: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS ATRIBUTOS

El uso de uno u otro Tipo de Dato, se verá reflejado en el uso de la memoria dentro del computador y en las operaciones que se puedan realizar con dichos atributos.

La firma para la definición de un Atributo:[ModifAcceso] TipoDato nombreAtributo; [ModifAcceso]: public, private, protected ó default

(cuando no se pone, pero como atributo de clase) TipoDato: Primitivo ó de Referencia

Los atributos definidos dentro de un método (atributo local) no tienen modificador de acceso, están disponibles únicamente durante la ejecución del método.

Page 31: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS ATRIBUTOS

El nombreAtributo debe cumplir con las siguientes reglas: Debe comenzar con una letra minúscula. Si contiene más de una palabra, éstas se separarán

con una letra mayúscula. No debe tener espacios, ni caracteres especiales

como el %, #, $, &. No debe ser una palabra reservada (Keyword) de

java.

Page 32: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DEL CONSTRUCTOR

La definición del método Constructor puede ser incluida dentro de la definición de la clase.

El Constructor contiene tareas e instrucciones necesarias que deben ejecutarse al momento de la creación de un Objeto, como por ejemplo, la inicialización de los atributos.

El Constructor puede ser llamado a través del operador new. Ejemplo:

Libro pensandoJava = new Libro();

pensandoJava es una variable de Referencia.

Page 33: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DEL CONSTRUCTOR

Toda clase java tiene al menos un constructor, llamado Constructor vacío, nulo ó por defecto, y es creado automáticamente por la JVM al momento de compilar la clase, no necesita ser escrito.

Se pueden definir constructores personalizados, tomando en cuenta las siguientes reglas: El nombre del constructor debe ser exactamente el

mismo de nombre de la clase. El constructor no devuelve nada, ni siquiera void(). Los constructores se pueden sobrecargar (Modificando

la lista de argumentos). Si se define un constructor personalizado, el

constructor por defecto desaparece y debe ser escrito si queremos utilizarlo.

Page 34: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS METODOS

Los métodos definen el comportamiento de un Objeto, es decir lo que el Objeto puede hacer .

Consisten en un conjunto de tareas que se ejecutan paso a paso, de manera procedimental.

En java, los métodos de una Clase, se implementan a través de funciones.

Los métodos deben tener: Un nombre significativo que describa lo que hace. Información requerida para realizar la tarea

(Argumentos). Un valor de retorno para mostrar los resultados (Tipo de

Dato Primitivo, de Referencia ó void cuando no retorna nada).

Page 35: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS METODOS

Firma para la definición de un Método:[ModifAcceso] TipoRetorno nombreMetodo(TipoDato param1, TipoDato param2,……,…){

//Definición del Método}

[ModifAcceso]: public, private, protected ó default TipoRetorno: Primitivo, de Referencia ó void nombreMetodo: reglas:

Debe ser un verbo y comenzar con una letra minúscula. Se pueden agregar otras palabras, separándolas con una

letra mayúscula. No debe tener espacios, ni guiones bajos. No debe ser una palabra reservada (Keyword) de java

TipoDato: Tipo de Dato Primitivo ó de Referencia del argumento

param1, param2: La lista de argumentos.

Page 36: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS METODOS

Tipos de Métodos: Mutadores: Cambian el estado de un Objeto (set) Accesores: Devuelven el estado de un Objeto (get) Que requieren argumentos: metodo(param1,

param2, .. , ..) Que no requieren argumentos: metodo( ) Métodos que retornan valores: Dentro de su

definición utilizan la palabra reservada return para devolver un Tipo de Dato Primitivo o de Referencia. Ej: métodos get

Métodos que no retornan valores: Métodos que tienen como tipo de retorno void, no necesitan un return. Ej: métodos set

Page 37: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS METODOS

El método mainpublic static void main(String args[ ]){}

Contiene las instrucciones para ejecutar una aplicación Java. Es conocido como el punto de entrada a una aplicación.

Toda aplicación Java debe tener al menos un método main.

Es un método estático, lo cual significa que no está asociado a un objeto en particular, y se lo puede invocar sin la necesidad de crear una instancia de la Clase.

Page 38: FPJUCE - Capitulo2

Descripción de una ClaseDEFINICIÓN DE LOS METODOS

Métodos SobrecargadosSon métodos dentro de la misma clase, que tienen las siguientes características:

1. Tienen el mismo nombre2. La lista de argumentos debe ser diferente, ya sea

en los tipos de datos o en el número de argumentos. Sólo modificar el orden de los argumentos NO es sobrecarga.

3. El valor devuelto puede o no ser el mismo, siempre y cuando la lista de argumentos sea diferente en los métodos sobrecargados. Lo contrario llevará a un error de compilación.

Page 39: FPJUCE - Capitulo2

Descripción de una ClaseLaboratorio 2.0: Opcional

Definir la siguiente Clase utilizando BlueJ

Page 40: FPJUCE - Capitulo2

Descripción de una ClaseLaboratorio 2.1: Creación de Clases

basadas en diagramas UML En el método main, utilizar ambos

constructores de la clase Estudiante, para crear 2 estudiantes s1 y s2 en el primer caso, setear los valores con los métodos set(), y en ambos casos imprimir los resultados utilizando los métodos get().

Page 41: FPJUCE - Capitulo2

Introducción a la Clase SystemClase utilizada para realizar tareas propias del

Sistema, como por ejemplo la entrada y salida de datos (A través de sus atributos in, out).

Se encuentra dentro del paquete java.lang.

System.out.println() – Para desplegar textosSystem.gc() – Para hacer la llamada al Garbage Collector

Page 42: FPJUCE - Capitulo2

Referencias Bibliográficas“Pensando en Java” - “Thinking in Java”

ECKEL, Bruce. Prentice Hall, Madrid 2002

“Cómo programar en Java”. DEITEL & DEITEL. Pearson - Prentice Hall. 2004

”Introducción a la Programación orientada a objetos con JAVA”. WU, C. Thomas. McGraw-Hill. 2001