definir los conceptos de la programación orientada a objetos utilizar los modificadores de acceso...

Post on 03-Jan-2015

41 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Definir los conceptos de la programación orientada a objetos

Utilizar los modificadores de acceso private y public (encapsulamiento)

Invocar un método de un objeto

El análisis describe qué hace el sistema:₋ Modelado del mundo real: actores y actividades,

objetos y comportamientos

El diseño describe cómo lo hace:₋ Modelado de relaciones e iteraciones entre objetos

y actores en el sistema₋ Detectar abstracciones útiles y utilización de

patrones para simplificar el problema o la solución

Funciones – Escribir el algoritmo una vez para usarlo muchas veces

Objetos – Agrupar un conjunto de atributos relacionados y comportamientos en una clase

Frameworks y APIs – Grandes grupos de objetos que dan soporte a una actividad compleja₋ Los Frameworks pueden ser utilizados “tal como

están” o se pueden extender sus comportamientos

En una fábrica, el diseño de un dispositivo describe como se van a construir muchos dispositivos físicos.

En software, una clase es la descripción de un objeto:₋ Una clase describe los datos que cada

objeto incluye₋ Una clase describe el comportamiento que

cada objeto exhibe

En la tecnología Java, las clases cumplen tres características claves de la POO:

₋ Encapsulamiento₋ Herencia₋ Polimofismo

Las cuales veremos más adelante.

Sintaxis básica de una clase Java:

<modificador> class < nombre_clase> { [< declaraciones_de_atributos>] [< declaraciones_de_constructores>] [< declaraciones_de_métodos>]}

Ejemplo:

public class Vehicle {private double maxLoad;

public void setMaxLoad(double value) { maxLoad = value; }

}

Existen 3 modificadores de acceso:₋ public₋ protected₋ private

Existen 4 niveles de acceso:₋ public₋ protected₋ default₋ private

Las clases solo pueden ser (excepción en caso inner clases):₋ public₋ default

Otros modificadores aplicables a clases₋ final₋ abstract

Por ahora veremos solo dos:₋ private: miembros solo visibles por la propia

clase, veremos más adelante que no se heredan

₋ public: miembros o clases visibles por todas las demás clases

Sintaxis básica de un atributo: [< modificadores>] < tipo> <nombre> [ =

<valor_inicial>];

Ejemplopublic class Foo { private int x; private float y = 10000.0F; private String name = "Bates Motel";}

Sintaxis básica de métodos: [< modificadores >] < tipo_retorno> <nombre>([<

lista_de_argumentos>]) { [< sentencias>]}

Ejemplopublic class Dog { private int weight; public int getWeight() { return weight;

} public void setWeight(int newWeight) { weight = newWeight;

} }

Si el tipo de retorno es un objeto, se acepta null como valor de retorno

Nada puede ser retornado si se declara el tipo de retorno como void, pero puede utilizarse simplemente return.

La notación “punto”: <objeto>.<miembro> Esto es utilizado para acceder a miembros de

objetos, como los atributos y métodos Ejemplos:

₋ d.setWeight(42);₋ d.weight = 42; // sólo permitido si weight

tiene

// alcance public

Los métodos y atributos son conocidos como “miembros” (también las inner classes).

Los miembros pueden usar todos los niveles de acceso.

Los miembros accedidos sin el operador punto (.) deben pertenecer a la propia clase.

El problema:El código del cliente tiene acceso a los datos

internos

d.day = 32;

// día no válido

d.month = 2; d.day = 30;

//posible pero erróneo

d.day = d.day + 1;

// no realiza chequeo sobre el mes

La solución: El código del cliente debe utilizar los métodos setters/getters para acceder a los datos internos:

₋ MyDate d = new MyDate();

₋ d.setDay(32);

₋ d.setMonth(2);₋ d.setDay(30);

₋ d.setDay(d.getDay() + 1);

Oculta los detalles de implementación de una clase

Obliga al usuario a utilizar una interfase para acceder a los datos

Hace el código más mantenible

Sintaxis básica de un constructor:[< modificador>] < nombre_de_clase> ([<

lista_de_argumentos>]) {[< sentencias>]

} Los constructores deben tener el mismo nombre

que la clase No tienen un tipo de retorno

Ejemplo1 public class Dog {2 private int weight;34 public Dog() {5 weight = 42;6 }78 public int getWeight() {9 return weight;10 }11 public void setWeight(int newWeight) {12 weight = newWeight;13 }14}

Existe por lo menos un constructor en cada clase.

Si el programador no escribe ningún constructor, el constructor por defecto esta presente automáticamente:₋ El constructor por defecto no recibe

parámetros₋ El cuerpo del constructor es vacío₋ Permite al programador construir objetos

con new Xxx() sin tener que escribir un constructor.

Todas las clases (incluso las abstractas) tienen por lo menos un constructor

Si se coloca un tipo de retorno en un constructor, se convierte en una función con el mismo nombre que la clase pero deja de ser un constructor

Las interfaces no tienen constructor(Importante)

Sintaxis básica de un archivo Java:[< declaración_de_package>][< declaraciones_de_import>]< declaración_de_clase>+

Ejemplo del archivo VehicleCapacityReport.java :

package shipping.reports;import shipping.domain.*;import java.util.List;import java.io.*;public class VehicleCapacityReport { private List vehicles; public void generateReport(Writer output) {...}}

Un archivo fuente puede tener solo una clase public

Un archivo fuente puede tener más de una clase no-public

Si el fuente contiene una clase publica su nombre debe coincidir con el de la clase

Los fuentes sin clases public no tienen restricciones en cuanto al nombre del archivo

Las clases en un mismo archivo pueden declararse en cualquier orden ( no existe problema de forward referencing )

Los paquetes permiten un mejor manejo de sistemas de software grandes

Los paquetes pueden contener clases y sub-paquetes

Sintaxis básica de la sentencia package:package < nombre_de_paquete_padre>[.<nombre_de_sub-paquete>]*;

Ejemplo:package shipping.reports;

Especifique la declaración del package al comienzo del archivo fuente.

Solamente una declaración de paquete por archivo fuente.

Si ningún paquete es declarado, entonces la clase pertenece al paquete por defecto.

Los nombres de los paquetes debe ser jerárquico y separado por punto.

Los paquetes son guardados en el árbol de directorio que contenga el nombre del paquete.

Ejemplo, los paquetes de la aplicación “shipping” :

Sintaxis básica de la sentencia import:

import < nombre_pkg> [.<nombre_sub_pkg>].< nombre_clase>;

(en este caso solamente se importa la clase que se va ha utilizar)

O

import < nombre_pkg>[.< nombre_sub_pkg>].*;

(en este caso se importan todas las clases del sub package)

Ejemplo:

import shipping.domain.*;

import java.util.List;

import java.io.*;

Precede a todas las declaraciones de clases Le indica al compilador dónde encontrar las

clases que se utilizan

Los imports son un shortcut al fully qualified name de la clase que importan. Ej: import java.util.List;public class Auto{

private List<Rueda> ruedas;......

} Si se usan clases de otro paquete y no hay sentencias de

import, se deberá usar el fully qualified name de la clase donde se quiera hacer referencia a la misma. Ej: public class Auto{

private java.util.List<Rueda> ruedas;......

} Imports y fully qualified names pueden coexistir

Clase – Código fuente que diseña los objetos de tiempo de ejecución

Objeto – Instancia de una clase También conocido como instancia Atributo – Elemento con información de un objeto También conocido como dato miembro, variable de instancia, campo de dato

Método – Elemento que define el comportamiento de un objeto. También conocido como algoritmo, función, procedimiento

Constructor – Es “como un método” constructor utilizado para inicializar un objeto nuevo

Package – Grupo de clases agrupada y/o sub paquetes

Conjunto de archivos HTML que provee información de las API

Un frame describe un paquete y contiene enlaces a páginas que describen la información de cada clase en ese paquete.

El documento de cada clase incluye la jerarquía de clases a la cuál pertenece, una descripción de la clase, una lista de variables miembro, una lista de constructores, una lista de métodos, etc.

La direccion es http://java.sun.com/j2se/1.5.0/docs/api/

Definición de objetivos. Definición de Programación Orientada a Objetos (POO) Fases en el Proceso de Software. Clases y Objetos Herencia, Polimorfismo y Encapsulamiento. Sintaxis: atributos, métodos, clases, constructores. Métodos de acceso y modificación. Paquetes e Imports de paquetes. Documentación de Java (API)

Arraquis₋ http://www.arrakis.es/~abelp/ApuntesJava/indice.htm

Java Sun ₋ http://download.oracle.com/javase/1.5.0/docs/guide/language/index.html

top related