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