FPJUCE - Capitulo2
-
Upload
ing-giovanny-moncayo -
Category
Education
-
view
1.568 -
download
0
description
Transcript of 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
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