Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETOS
Karim Guevara Puente de la Vega
2016
Conceptos de POO
Un objeto combina datos y operaciones (mtodos)
Encapsulamiento - ocultamiento de informacin
Separa el qu (especificacin funcional, pblica)
Del cmo (implementacin, privada)
Conceptos que apoyan la reutilizacin de cdigo
Cdigo genrico - lgica del algoritmo independiente del tipo
de datos.
Herencia - extiende la funcionalidad de un objeto.
Polimorfismo - seleccin automtica de la operacin
apropiada segn el tipo y nmero de los parmetros.
Clases
En java un objeto es una instancia de una clase.
public Fecha() {
this (2001, 1, 1);
}
Campos y mtodos estticos
Hay dos tipos de campos estticos
public final static doble PI = 3.14159; //constante
Integer.parseInt
...
int may = Matematica.max(10,56);
System.out.println(Menor : +Matematica.min(2,19));
...
Packages
Agrupan clases
Package P;
class C {
...
}
Private
Protected
Constructores
Sino se define un constructor, se genera automticamente
un constructor sin parmetros:
Llama al constructor con cero parmetros de la clase base,
para la parte heredada
Inicializa con valores nulos los campos restantes.
Si hay un constructor, su primera instruccin puede ser una
llamada a:
super();
Person
Student Class name age
address
gpa
Student Employee
Employee Class name age
address
salary
Compatibilidad de tipos
class Student extends Person {
public Student( String n, int ag, String ad, double g ) {
super( n, ag, ad); gpa = g;
}
public String toString( ) { return super.toString( ) + getGPA( ); }
public double getGPA( ) { return gpa; }
private double gpa;
}
class Persona extends Person {
public Persona( String n, int ag, String ad, double s ) {
super( n, ag, ad); salary = s;
}
public String toString( ) {
return super.toString( ) + $ + getSalary( );
}
public double getSalary( ) { return salary; }
public void raise( double percentRaise ) {
salary *= (1 + percentRaise);
}
private double salary;
}
Compatibilidad de tipos
Student IS-A Person, un objeto Student puede ser accedido a travs de
una referencia Person:
. . .
Student s = new Student( "Joe", 26, Av. Ejercito 126", 4.0 );
Person p = s;
System.out.println( "Age is " + p.getAge( ) );
. . .
. . .
p[3].raise(0.04);
. . .
((Employee) p[3].raise(0.04);
. . .
if( p[3] instanceof Employee )
((Employee) p[3]).raise( 0.04 );
Mtodos abstractos
Un mtodo abstracto declara funcionalidad, pero no la
implementa.
Las clases derivadas deben proveer implementaciones para
estos mtodos.
Una clase abstracta es una clase que tiene al menos un
mtodo abstracto.
No se puede crear objetos pertenecientes a una clase
abstracta.
Mtodos abstractos
abstract class Figura {
private String nombre;
abstract public double area();
public Figura(String n) {
nombre = n;
}
//Este constructor no puede ser invocado directamente,
// slo lo usan las clases derivadas
final public double compArea( Figura b ) {
return area() - b.area();
}
final public String toString() {
return nombre + " de area " + area();
}
}
Mtodos abstractos
Clases derivadas
public class Circulo extends Figura {
static final private double PI = 3.141592653;
private double radio;