FPJUCE - Capitulo2

Post on 23-Jun-2015

1.567 views 0 download

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

Ing. Giovanny MoncayoIng. Giovanny Moncayo

gmoncayo@fing.uce.edu.ecgmoncayo@fing.uce.edu.ecgiovanny.moncayo@gmail.comgiovanny.moncayo@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

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

Palabras clave

Objeto Clase Atributo Método – Accesores, Mutadores,

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

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

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.

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.

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)

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.

Qué son los Objetos?

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.

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”.

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; }

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 ( . )”

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.

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

ACCESO

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).

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.

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

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.

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.

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.

UML – Diagrama de Clases Permite modelar:

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

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)

UML – Símbolos del Diagrama de Clases

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

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

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

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.

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.

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

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.

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.

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.

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.

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).

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.

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

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.

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.

Descripción de una ClaseLaboratorio 2.0: Opcional

Definir la siguiente Clase utilizando BlueJ

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().

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

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