Vous êtes sur la page 1sur 18

JAVA

Orientacin a Objetos

Orientacin a objetos >> Temario


Orientacin a objetos. Conceptos bsicos. Ciclo de vida de los objetos. Encapsulamiento. Herencia. Polimorfismo. Modificadores de acceso. Otros modificadores. Interfaces.
Curso de Programacin Orientada a Objetos Sonia Abs JAVA- Orientacin a Objetos

Orientacin a objetos >> Introduccin

La programacin orientada a objetos define los sistemas como un conjunto de objetos con comportamiento que interactan entre ellos. Cmo defino el comportamiento de los objetos? A travs de la definicin de las clases. Esto revierte en: Manera ms natural de encarar el diseo de un sistema. Concepto de modularidad. Mayor robustez. Mayor escalabilidad/extensibilidad.

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Orientacin a objetos >> Conceptos bsicos

Clase: Definicin de las propiedades y comportamiento de un tipo de objetos. Objeto: Entidades modulares con comportamiento segn el tipo especificado en su clase. Atributo: Caractersticas o propiedades de un objeto, se definen en su clase. Mtodo: Comportamiento de un objeto, se definen en su clase. Clase Atributos
public class Person { String name; String surname; Person (String nameArg, String surnameArg) { name = nameArg; surname = surnameArg; }

Objetos

Person pepe = new Person("Pepe","Perez"); Person sonia = new Person("Sonia","Abos");

Mtodo

String getFullName() { return name + " "+ surname; } }

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Orientacin a objetos >> Ciclo de vida de los objetos Creacin


Constructores: Si no implementamos ninguno -> Constructor por defecto (sin argumentos, sin funcionalidad). Podemos implementar tantos como queramos. No se declara tipo de retorno.
Person (String name, String surname) { this.name = name; this.surname = surname; }

Instanciacin: El operador new reserva memoria y devuelve una referencia.


Person pepe = new Person("Pepe","Perez"); Person sonia = new Person("Sonia","Abos");

Inicializacin: En el momento de creacin del objeto (new), se inicializan todos los atributos de ese objeto (0, ,false null).
Curso de Programacin Orientada a Objetos Sonia Abs JAVA- Orientacin a Objetos

Orientacin a objetos >> Ciclo de vida de los objetos Utilizacin


Se accede a los miembros de un objeto (atributos y mtodos) mediante la notacin.
String pepeName = pepe.name; String pepeSurname = pepe.surname; String pepeFullName = pepe.getFullName();

Los mtodos de una clase pueden referenciar a los atributos de dicha clase sin utilizar la notacin .
public class GestionAlumnos { public static void main(String[] args) { Alumno a1 = new Alumno (Pepe,Prez); a1.setAddress(c/Villaroja 24 2A); } } public String String String class Alumno{ name; surname; adress;

public Alumno (String nameInput, String surnameInput) { name = nameInput; surname = surnameInput } public setAddress(String addressInput) { address = addressInput; } }
JAVA- Orientacin a Objetos

Curso de Programacin Orientada a Objetos Sonia Abs

Orientacin a objetos >> Ciclo de vida de los objetos Destruccin


La eliminacin destruccin de objetos se realiza automticamente por el entorno a travs del garbage collector, que elimina todos los objetos que no poseen variables activas apuntando a ellos.

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Orientacin a objetos >> Encapsulacin


El paradigma de la programacin orientada a objetos est basada en 3 pilares: Encapsulamiento, Herencia y Polimorfismo. Encapsulamiento significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohesin de los componentes del sistema. Adems, en cada objeto, sus propiedad deben mantenerse aisladas , exponindose al exterior a travs de interfaces/mtodos pblicos. El encapsulamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado.
} private class Person { private String name; private String surname;

Person (String name, String surname) { this.name = name; this.surname = surname; } public String getFullName() { return getName() + " "+ getSurname(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; }

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Orientacin a objetos >> Herencia


Herencia: Los objetos pueden heredar las propiedades y el comportamiento de otras clases . Esto permite a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Java no permite herencia mltiple.
class Student extends Person { private int curso; Student (String name, String surname) { this.name = name; this.surname = surname; } public int getCurso() { return curso; } public void setCurso(int curso) { this.curso = curso; } }

Person.java
String name String surname String address String getName(); String getSurname(); String getAddress(); void setName(String name); void setSurname(String sname); void setAddress (String address);

Student.java
int curso int getCurso(); void setCurso( int curso);

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Orientacin a objetos >> Polimorfismo

Polimorfismo: Mtodos sobrecargados y sobreescritos.


Mtodos sobrecargados: Son aquellos mtodos que en una misma clase subclase, compartiendo el mismo nombre, tienen distintos parmetros de entrada.

public class Articulo { private float precio; public void setPrecio() { precio = 3.50; } public void setPrecio(float nuevoPrecio) { precio = nuevoPrecio; } }

Mtodos sobrecargados

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Orientacin a objetos >> Polimorfismo

Mtodos sobreescritos: Son aquellos mtodos que se definen en una subclase con el mismo nombre y mismos parmetros de entrada y retorno.
public class Animal { public void comer(){ System.out.println("Animal comiendo"); } } class Caballo extends Animal{ public void comer(){ System.out.println("Caballo comiendo"); } } public static void main(String[] args){ Animal a = new Animal(); Caballo c = new Caballo(); a.comer(); //Animal comiendo c.comer(); //Caballo comiendo }

En algunas ocasiones necesitamos invocar al mtodo escrito en la superclase en lugar de la versin que hemos sobreescrito, para ello se utiliza la palabra super
class Caballo extends Animal{ public void comer(){ super.comer(); } }
Curso de Programacin Orientada a Objetos Sonia Abs JAVA- Orientacin a Objetos

Java >> Modificadores de acceso

Los modificadores de acceso determinan la visibilidad de una clase o miembro de ella. Las clases pueden ser modificadas como public default (sin modificador explcito): Las clases public son visibles a todo el resto de clases. Las clases default son visibles slo dentro de su paquete (grupo de clases). Los miembros de las clases (propiedades y mtodos) pueden ser modificados como public -protected- default -private: Los miembros private son visibles slo dentro de la clase en la que se definen. Los miembros protected son visibles dentro de las clases del paquete al que pertenece la clase donde se definen y sus subclases. Protected = default + herencia

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Java >> Modificadores de acceso

Access Levels Modifier


public protected

Class Y Y Y Y

Package Y Y Y

Subclass Y Y

World Y

no modifier
private

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Java >> Otros modificadores >> static

Classes Instance Variables Methods local variables final

abstract

final static volatile synchronized native transient

abstract

final final

static

Los miembros estticos (static) pertenecen a la clase y no son transferidos a los objetos. Su acceso es a partir del nombre de la clase, en vez de a la del objeto.
public class Person { private String name; private String surname; public static String CLASS_NAME = "PERSON"; public static void main(String[] args) { System.out.println(Person.CLASS_NAME); } }

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Java >> Otros modificadores >> abstract


Las clases abstract son aqullas que contienen, al menos, un mtodo abstracto. Los mtodos abstract son aqullos que se declaran sin implementacin concreta. La primera clase concreta de una clase abstracta DEBE implementar todos los mtodos abstractos de esa superclase.
abstract class GraphicObject { int x, y; void moveTo(int newX, int newY) { ... } abstract void draw(); abstract void resize(); } class Circle extends GraphicObject { void draw() { System.out.println(Circle draws) } void resize() { System.out.println(Circle resize) } } class Rectangle extends GraphicObject { void draw() { System.out.println(Rectangle draws) } void resize() { System.out.println(Rectangle resize) } }

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Java >> Otros modificadores >> final

Las clases final son aqullas que no se pueden heredar. E.g. clase String Las variables final (locales o de instancia) son aqullas cuyo valor slo puede ser asignado una vez. -> E.g.Constantes.
static final double PI = 3.141592653589793;

Los mtodos final son aqullos que no se pueden sobreescribir.

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Java >> Otros modificadores >> Resumen

Classes Instance Variables Methods local variables

abstract

final final static static volatile synchronized native transient

abstract

final final

Curso de Programacin Orientada a Objetos Sonia Abs

JAVA- Orientacin a Objetos

Java >> Interfaces


Un interfaz (interface) es una especie de clase abstracta con slo mtodos, todos ellos abstractos.
public interface VideoClip { // comienza la reproduccion del video void play(); // reproduce el clip en un bucle void bucle(); // detiene la reproduccion void stop(); } class MiClase implements VideoClip { void play() { <cdigo> } void bucle() { <cdigo> } void stop() { <cdigo> }

Java no permite herencia mltiple; sin embargo, s permite implementar varios interfaces.
interface A { } interface B { } class X implements A, B { }

Un interface puede extender de otros interfaces


public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); } public interface DoItPlus extends DoIt { boolean didItWork(int i, double x, String s); }
JAVA- Orientacin a Objetos

Curso de Programacin Orientada a Objetos Sonia Abs

Vous aimerez peut-être aussi