3 Programación Orientada a Objetos

download 3 Programación Orientada a Objetos

of 73

Transcript of 3 Programación Orientada a Objetos

  • 8/17/2019 3 Programación Orientada a Objetos

    1/73

    Curso Lenguaje de Programación Java

  • 8/17/2019 3 Programación Orientada a Objetos

    2/73

  • 8/17/2019 3 Programación Orientada a Objetos

    3/73

    Programación #rientada a #bjetos$

  • 8/17/2019 3 Programación Orientada a Objetos

    4/73

    Encapsulamiento

    %na posible denición deencapsulamiento ser&a' la capacidadde tiene un objeto de ocultar dele(terior su implementación$

    A la parte visible del objeto se lellama inter)a*$

  • 8/17/2019 3 Programación Orientada a Objetos

    5/73

    Encapsulamiento

    +Por ,ué es necesario elencapsulamiento- public class Persona {

     public String nombre;

     public String apellidos; public float peso;

    }

    public class TestPersona {public static void

    main(String[] args){Persona tu.tu / new Persona();tu$nombre / 0Juanita0.tu$apellidos / 0Pere*1on*ale*0.

    tu.peso = - !."#;

  • 8/17/2019 3 Programación Orientada a Objetos

    6/73

    Encapsulamiento

    +Cómo resolvemos este problema-public class Persona {

    public !tring nombre.public !tring apellidos.

    private $oat peso;public $oat getPeso(){

    return peso;%public void setPeso($oatpeso){

    i#(peso &=!){t'is.peso =peso;%

    %2

    public class TestPersona {public static voidmain(String[] args){

    Persona tu.tu / new Persona();tu$nombre / 0Juanita0.tu$apellidos / 0Pere*1on*ale*0.

    tu.setPeso(- !."#);2

    2

  • 8/17/2019 3 Programación Orientada a Objetos

    7/73

    Encapsulamiento

    Pero un buen dise3o #rientado a#bjetos implementaráencapsulamiento en todos losatributos del objeto ,uedandonuestro ejemplo como sigue:

  • 8/17/2019 3 Programación Orientada a Objetos

    8/73

    Encapsulamiento

    public class Persona {private String nombre;private String apellidos;private $oat peso;public String getpellidos() {

    return apellidos;%

    public void setpellidos(Stringapellidos) {

    t'is.apellidos = apellidos;%public String getombre() {

    return nombre;%public void setombre(String nombre){

    t'is.nombre = nombre;%public $oat getPeso(){

    return peso;%public void setPeso($oat peso){

    i#(peso &=!){  t'is.peso = peso;%%

    2

  • 8/17/2019 3 Programación Orientada a Objetos

    9/73

    Encapsulamiento

    %na clase ,ue encapsule todos susatributos es dise3ada pensado en el)uturo' por ,ue es muc4o másreutili*able' como lo veremos másadelante en 4erencia 5 sobre"escritura de métodos$

  • 8/17/2019 3 Programación Orientada a Objetos

    10/73

  • 8/17/2019 3 Programación Orientada a Objetos

    11/73

    Programación #rientada a #bjetos

  • 8/17/2019 3 Programación Orientada a Objetos

    12/73

    Constructores

    En la P## se trabajan objetos' todoslos objetos tienen ,ue serconstruidos' la tarea de construir unobjeto recae en el constructor$

    Los constructores se utili*an parainiciali*ar las variables atributo de laclase$

  • 8/17/2019 3 Programación Orientada a Objetos

    13/73

    Constructores

    Los constructores son estructuras mu5parecidas a los métodos' con algunasdi)erencias$

    !e ejecutan automáticamente$ ;o tiene tipo de retorno$

    !e llaman e(actamente igual a la clase$

    El constructor va después de la palabra

    reservada ne

  • 8/17/2019 3 Programación Orientada a Objetos

    14/73

    Constructores

    Ejercicio de Constructores$

    vion

    "marca: !tring"modelo: !tring"tipo: !tring"numero7ePla*as: int"numeroMotores: int"peso: 8oat"alturaMa(ima: 8oat"numero#peradores: int

    6getMarca9: !tring

    6setMarca9marca: !tring: void6$$$$96Avion96Avion9marca: !tring6Avion9marca: !tring' modelo: !tring6Avion9marca: !tring' modelo: !tring' tipo: !tring6Avion9marca: !tring' modelo: !tring' tipo: !tring' numeroPla*as: int

    Testvion

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    15/73

    Constructores

    #tro ejercicio de constructores$

    Persona*

    "nombre: !tring"apellidos: !tring"dia;acimiento: b5te"mes;acimiento: s4ort"a3o;acimiento: long")allecido: boolean

    6$$$96Persona=9

    6Persona=9nombre: !tring6Persona=9nombre: !tring' apellidos: !tring6Persona=9nombre: !tring' apellidos: !tring' dia: b5te' mes: s4ort' a3o: long6Persona=9nombre: !tring' apellidos: !tring' dia: b5te' mes: s4ort' a3o: long' )allecido: boolean

    Persona*Test

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    16/73

    Constructores

    La llamada a otros constructores enla misma clase se 4ace utili*ando lapalabra reservada t4is$ > entreparéntesis el numero de argumentos,ue utili*a el constructor' porejemplos:

     t4is9marca  t4is9marca' modelo$

  • 8/17/2019 3 Programación Orientada a Objetos

    17/73

    Constructores

    Modi,uemos la clase Avion para vercomo )unciona t4is9$

    vion

    "marca: !tring"modelo: !tring"tipo: !tring"numero7ePla*as: int"numeroMotores: int"peso: 8oat"alturaMa(ima: 8oat"numero#peradores: int

    6getMarca9: !tring

    6setMarca9marca: !tring: void6$$$$96Avion96Avion9marca: !tring6Avion9marca: !tring' modelo: !tring6Avion9marca: !tring' modelo: !tring' tipo: !tring6Avion9marca: !tring' modelo: !tring' tipo: !tring' numeroPla*as: int

    Testvion

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    18/73

    Programación #rientada a #bjetos$

  • 8/17/2019 3 Programación Orientada a Objetos

    19/73

    Herencia

    La 4erencia esta en todas partes en Java' aun 5 cuando nosotros noescribamos código manejandointencionalmente la 4erencia$ ?odaslas clases ,ue nosotros escribimos4eredan a la Clase #bject$

    +@ué es la 4erencia-

  • 8/17/2019 3 Programación Orientada a Objetos

    20/73

    Herencia

    Podemos denir 4erencia como lacapacidad ,ue tiene un objeto de 4acerpropias las caracter&sticas de un

    segundo objeto$

    Cuando una persona recibe las ri,ue*as

    económicas de otra se le llama4erencia' de la misma manera unobjeto puede recibir las ri,ue*as9métodos 5 atributos de otro$

  • 8/17/2019 3 Programación Orientada a Objetos

    21/73

    Herencia

    La 4erencia se indica con la palabrareservada e(tendsB$ eamos unejemplo:public class Persona {

    private String nombre;private String apellidos;private $oat peso;public String getpellidos() {

    return apellidos;%$$$

    2

    public class +mpleado e,tendsPersona{

    private String puesto;private $oat salario;public $oat getSalario(){return salario;2$$$

    2

    !uper clase

    !ub clase

  • 8/17/2019 3 Programación Orientada a Objetos

    22/73

    Herencia

    Ejercicio de Herencia$

    Constru5amos las clases anteriores 5constru5amos objetos de ambas 5observemos sus atributos 5 métodos$

  • 8/17/2019 3 Programación Orientada a Objetos

    23/73

    Herencia

    ;otas importante sobre la 4erencia:

    En java solo se puede utili*ar4erencia simple' es decir' una clasesolo puede tener una superclase$

    Para simular la 4erencia mDltiple seutili*an las inter)aces' lo veremosmás adelante$

    Los constructores no son 4eredados$

  • 8/17/2019 3 Programación Orientada a Objetos

    24/73

    Encapsulamiento y

    HerenciaEjercicio de epaso:Tele#ono

    "marca: !tring"modelo: !tring

    6$$$96contestar9: void64acerLlamada9numero: !tring: void

    elular

    "numeroMensajesEnviados: int

    6$$$96enviarMensaje9mensaje: !tring' numero: !tring: boolean6recibirMensaje9mensaje: !tring' numero: !tring: boolean

    elular*

    "duracionFateria: 8oat"numeroLlamadas: int

    6$$$9

    elular/

    6numeroGotos: int

    6$$$96tomarGoto9: void

  • 8/17/2019 3 Programación Orientada a Objetos

    25/73

    Programación #rientada a #bjetos

  • 8/17/2019 3 Programación Orientada a Objetos

    26/73

  • 8/17/2019 3 Programación Orientada a Objetos

    27/73

    Modificadores de Acceso

     ?enemos cuatro di)erentes modicadoresde acceso en Java:

    public

    protected

    de)ault 9no escribir un modicador

    private

    Mientras va5amos bajando en la lista dearriba cada modicador de acceso serámás restrictivo$

  • 8/17/2019 3 Programación Orientada a Objetos

    28/73

    Modificadores de Acceso

    La siguiente tabla muestra enresumen las caracter&sticas de losmodicadores de acceso:

    0isibilidad Public

    Protected 1e#ult

    Private

    7esde la misma clase !i !i !i !i

    7esde cual,uier clase en elmismo pa,uete

    !i !i !i ;o

    7esde una subclase desdeel mismo pa,uete !i !i !i ;o

    7esde una subclase )ueradel mismo pa,uete

    !i !i' a travésde la4erencia

    ;o ;o

    7esde cual,uier nosubclase )uera del mismo

    pa,uete

    !i ;o ;o ;o

  • 8/17/2019 3 Programación Orientada a Objetos

    29/73

    Herencia

    Hagamos algunos ejemplos pararevisar el comportamiento de losmodicadores de acceso$

  • 8/17/2019 3 Programación Orientada a Objetos

    30/73

    Herencia

    Cuando utili*amos la 4erencia' no4eredamos los constructores denuestra clase super$ Para poder

    invocarlos utili*amos la palabrareservada super 5 entre paréntesis losargumentos ,ue utili*a el constructor$

    super9.super9nmbre.

    super9nombre' apellidos.

  • 8/17/2019 3 Programación Orientada a Objetos

    31/73

    Herencia

    Modi,uemos nuestro ejemplo paraver el uso de super9

    Persona*

    "nombre: !tring"apellidos: !tring"dia;acimiento: b5te"mes;acimiento: s4ort"a3o;acimiento: long")allecido: boolean

    6$$$96Persona=9nombre: !tring6Persona=9nombre: !tring' apellidos: !tring6Persona=9nombre: !tring' apellidos: !tring' dia: b5te' mes: s4ort' a3o: long6Persona=9nombre: !tring' apellidos: !tring' dia: b5te' mes: s4ort' a3o: long' )allecido: boolean

    Tests2erencia

    6static main9args9: !tring:void

    +mpleado

    "puesto: !tring"salario: 8oat

    6$$$96Empleado9nombre: !tring6Empleado9nombre: !tring' apellidos: !tring6Empleado9nombre: !tring' apellidos: !tring' puesto: !tring6Empleado9nombre: !tring' apellidos: !tring' puesto: !tring' salario: 8oat

  • 8/17/2019 3 Programación Orientada a Objetos

    32/73

    Herencia

    La palabra fnal   puede ser colocadacomo un modicador de la clase porejemplo:

    Indicando ,ue la clase no puede ser4eredada' la clase !tring es unejemplo de esto$

    public 3nal class 45lase {

    2

  • 8/17/2019 3 Programación Orientada a Objetos

    33/73

    Herencia

    La palabra reservada nal tambiénpuede ser colocada como unmodicador de un método' si secoloca indica ,ue un método nopuede ser sobre"escrito en lasubclase$ Más adelante revisaremos

    esto$public class 45lase {

    public 3nal voidmetodo(){

    22

  • 8/17/2019 3 Programación Orientada a Objetos

    34/73

    Programación #rientada a #bjetos

  • 8/17/2019 3 Programación Orientada a Objetos

    35/73

    Polimorfismo

    El polimorsmo puede ser denidocomo la capacidad de tratar a un objetode varias )ormas' por ejemplo' un

    objeto empleado pude ser tratado comouna persona' al n 5 al cabo unempleado es una persona$

    Ejemplo de una l&nea ,ue utilicépolimorsmo:

    Persona p = new Empleado();

  • 8/17/2019 3 Programación Orientada a Objetos

    36/73

    Polimorfismo

     Persona p = new Empleado();

    Lo ,ue estamos diciendo en la l&neaanterior es ,ue creamos un empleado'pero de ese empleado solo nosinteresa ver las caracter&sticas de su

    persona$ Pero como empleadotambién tiene un puesto 5 un salario'pero no lo podremos ver$

  • 8/17/2019 3 Programación Orientada a Objetos

    37/73

    Polimorfismo

    Hagamos unejemplo de

    Polimorsmo$

    Tele#ono

    "marca: !tring"modelo: !tring

    6$$$96contestar9: void64acerLlamada9numero: !tring: void

    elular

    "numeroMensajesEnviados: int

    6$$$96enviarMensaje9mensaje: !tring' numero: !tring: boolean6recibirMensaje9mensaje: !tring' numero: !tring: boolean

    elular*

    "duracionFateria: 8oat"numeroLlamadas: int

    6$$$9

    elular/

    6numeroGotos: int

    6$$$96tomarGoto9: void

    Polimor3smo

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    38/73

    Polimorfismo

    A4ora vemos comoutili*ar elpolimorsmo 5 elpaso de argumentosa métodos$

    Tele#ono

    "marca: !tring"modelo: !tring

    6$$$96contestar9: void64acerLlamada9numero: !tring: void

    elular

    "numeroMensajesEnviados: int

    6$$$96enviarMensaje9mensaje: !tring' numero: !tring: boolean6recibirMensaje9mensaje: !tring' numero: !tring: boolean

    elular*

    "duracionFateria: 8oat"numeroLlamadas: int

    6$$$9

    elular/

    6numeroGotos: int

    6$$$96tomarGoto9: void

    Polimor3smo

    64acerLlamada9tel: ?ele)ono: void6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    39/73

    Programación #rientada a #bjetos9Herencia$

  • 8/17/2019 3 Programación Orientada a Objetos

    40/73

    Sobre–Escritura de

    MétodosLa sobre"escritura consiste en reempla*arel comportamiento de un método4eredado$

    Para sobre"escribir un método simplemente4a5 ,ue volver a escribirlo en la sub clase$!olo pueden sobre"escribirse a,uellos

    métodos ,ue sean 4eredados$' por ejemplolos métodos private no se 4eredan' por lotanto no se pueden sobre"escribir$

  • 8/17/2019 3 Programación Orientada a Objetos

    41/73

    Sobre–Escritura de

    MétodosEl siguiente es un ejemplo de sobre"escritura:

    public class Tele#ononalogo{public void marcar(int numero){

    Cosas para marcar con un telé)onoAnálogo2marcar9

    2?ele)onoAnalogo

    public class Tele#ono1igital e,tends

    Tele#ononalogo{public void marcar(int numero){

    Cosas para marcar con un telé)ono7igital2marcar9

    2?ele)ono7igital

  • 8/17/2019 3 Programación Orientada a Objetos

    42/73

    SobreEscritura de

    MétodosEjemplo de sobre"escritura demétodos:

    4ami#ero

    6se(o: c4ar

    6comer9!tring alimento: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

     6 ira#a

    6comer9!tring alimento: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

    7eon

    6comer9!tring alimento: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

    2umano

    6comer9alimento: !tring: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

  • 8/17/2019 3 Programación Orientada a Objetos

    43/73

    Programación #rientada a #bjetos9Herencia$

  • 8/17/2019 3 Programación Orientada a Objetos

    44/73

    SobreCarga de Métodos

    La programación orientada a objetospermite el tener varios métodos conel mismo nombre pero con di)erentesrmas$ Por ejemplo podemos tener Kmétodos ,ue se llamen'suma9valor=:int' valorK:int 5

    suma9valor=:8oat' valorK:8oat$

  • 8/17/2019 3 Programación Orientada a Objetos

    45/73

    SobreCarga de Métodos

    La rma de un método esta )ormadapor el nDmero 5 tipo de losargumentos$ En el ejemplo de losdos métodos suma' tenia el mismonDmero de argumentos sin embargoeran de di)erentes tipos' por lo tanto

    es un método sobre"cargado$

  • 8/17/2019 3 Programación Orientada a Objetos

    46/73

    SobreCarga de Métodos

    Ejemplo de sobre"carga con valoresprimitivos:

    Sobrearga

    6metodo9: void6metodo9valor: b5te: void6metodo9valor.s4ort: void6metodo9valor: int: void6metodo9valor: long: void6metodo9valor: boolean: void6metodo9valor: 8oat: void6metodo9valor: double: void6metodo9valor=: b5te' valorK: b5te: void

    6metodo9valor=: b5te' valorK: s4ort: void6metodo9valor=: b5te' valorK: int: void6metodo9valor=: 8oat' valorK: boolean: void

    TestSobrearga

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    47/73

    SobreCarga de Métodos

    Ejemplo de !obre"Carga cone)erencias:

    Sobrearga8e#erencias

    6metodo9: void6metodo9animal: Animal: void6metodo9leon: Leon: void6metodo9jira)a: J ira)a: void6metodo94umano: Humano: void

    TestSobrearga8e# 

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    48/73

    Programación #rientada a #bjetos9Herencia$

  • 8/17/2019 3 Programación Orientada a Objetos

    49/73

    Casting con !ariables de"eferencia

    El casting con variables de re)erencia)unciona un poco di)erente al castingcon primitivos$ El casting convariables de re)erencia sobre sepuede 4acer entre variables ,uetenga una relación de 4erencia$ > se

    puede 4acer con algunasrestricciones ,ue veremos conejemplos$

  • 8/17/2019 3 Programación Orientada a Objetos

    50/73

    Casting con !ariables de"eferencia

    Ejemplos de casting de variables dere)erencia:

     Jira)a jira)a / ne< Jira)a9.

    Animal a / 9Animaljira)a.

    ertebrado v / 9ertebradoa.a / 9Animalv.

     jira)a / 9Jira)aa.

  • 8/17/2019 3 Programación Orientada a Objetos

    51/73

    Casting con !ariables de"eferencia

    Creemos una jerar,u&a de clasepara ver ,ue es el

    casting dere)erencias

    4ami#ero

    "se(o: c4ar

    6comer9!tring alimento: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

     6 ira#a

    6comer9!tring alimento: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

    7eon

    6comer9!tring alimento: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

    2umano

    6comer9alimento: !tring: void6comunicarse9: void6caminar9: void6respirar9: void6aparear9pareja: Mami)ero: void

    0ertebrado

    "numeroertebras: int

    6get;umeroertebras9: int6set;umeroertebras9numero: int: void

    Testasting8e#erencias

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    52/73

    Programación #rientada a #bjetos

  • 8/17/2019 3 Programación Orientada a Objetos

    53/73

    Miembros Static

    Los atributos 5 métodos ,ueescribimos en una clase 5 losmarcamos como static' )uncionan

    di)erente$ Cuando a un miembro no leponemos la palabra static' se crea unacopia de el durante la instancia$ Perocon los miembros static no ocurre lomismo' por eso para llamarlos solotenemos ,ue poner el nombre de laclase 5 el nombre del miembro$

  • 8/17/2019 3 Programación Orientada a Objetos

    54/73

    Miembros static

    public class lase {

    public int atributo*;

    static public int atributo2;

    2

    Para llamar un miembro no static tengo ,ue4acer lo siguiente:

    Clase miClase = new Clase();

    miClase.atributo1 = 5;

    Pero para llamar un miembro static solo tengo,ue 4acer lo as&:

    Clase.atributo2 = 5;

  • 8/17/2019 3 Programación Orientada a Objetos

    55/73

    Miembros Static

    Hagamos un ejemplo para identicarcomo )uncionan los miembros static:

    9icicleta

    6static bicicletas: int"clave: int"marca: !tring"modelo: !tring"rodada: int

    6Ficicleta96Ficicleta9marca: !tring

    6Ficicleta9marca: !tring' modelo: !tring6Ficicleta9marca: !tring' modelo: !tring' rodada: int6$$$96avan*ar9: void6)renar9: void6cambiarelocidad9: int

    Test9icicleta

    6static main9args9: !tring:void

  • 8/17/2019 3 Programación Orientada a Objetos

    56/73

    Miembros Static

    Hagamos otro ejercicio

    irculo

    6static PI: double"radio: 8oat

    6getadio9: 8oat6setadio9radio: 8oat: void6calcular7iametro9: 8oat6calcularPerimetro9

    Testirculo

    6static main9args: !tring: void

  • 8/17/2019 3 Programación Orientada a Objetos

    57/73

    Programación #rientada a #bjetos

  • 8/17/2019 3 Programación Orientada a Objetos

    58/73

    Clases Abstractas

    %na clase abstracta es a,uella ,uetiene uno o varios métodos sinimplementar 9código 5 ,ue solo indica

    su nombre 9rma$ A los métodos sinimplementación se les coloca la palabraabstract, si una clase tiene un métodoabstract' toda la clase también tiene

    ,ue ser abstract$

    ¡De una clase abstracta no podemoshacer instancias!

  • 8/17/2019 3 Programación Orientada a Objetos

    59/73

    Clases Abstractas

    Las clases abstractas no sirven paraincluir )uncionalidad ,ue varios tiposde objetos van a necesitar 5 no

    ,ueremos escribirla varias veces$ >utili*ando la 4erencias logramos ,ueunos objetos tenga esa

    )uncionalidad$

  • 8/17/2019 3 Programación Orientada a Objetos

    60/73

    Clases Abstractas

    Ejemplo de la declaración de unaclase abstracta:

    public abstract class 0e'iculo {public void encender(){%public abstract $oat acelerar();

    2

    class arro e,tends 0e'iculo{public $oat acelerar(){

    return *!.!!#;22

  • 8/17/2019 3 Programación Orientada a Objetos

    61/73

    Clases Abstractas

    eamos un ejemplo del uso de clasesabstractas:

    Veiculo

    "marca: !tring"modelo: !tring6encendido: boolean"velocidadMa(ima: 8oat

    6$$$96encender9: boolean6apagar9: boolean6acelerar9: 8oat6)renar9: 8oat

    4otoicleta

    6acelerar9: 8oat6)renar9: 8oat

    arro

    6acelerar9: 8oat6)renar9: 8oat

    7anc'a

    6acelerar9: 8oat6)renar9: 8oat

    eroplano

    6acelerar9: 8oat6)renar9: 8oat

  • 8/17/2019 3 Programación Orientada a Objetos

    62/73

    Programación #rientada a #bjetos

  • 8/17/2019 3 Programación Orientada a Objetos

    63/73

    #nterfaces

    Las inter)aces en java son como clases enlas cuales solo colocamos métodosabstractos$ %na inter)a* nos permite

    poner los métodos ,ue debe de tener unaclase$ %na inter)a* tampoco se puedeinstanciar 5 debe ser implementada poruna clase 9concreta ,ue esta obligada aponer )uncionalidad a los métodos$

     ?ambién puede ser implementada por unaclase abstracta sin embargo no estaobligada a implementar los métodos$

  • 8/17/2019 3 Programación Orientada a Objetos

    64/73

    #nterfaces

    %n ejemplo de declaración deinter)a* se 4ace de la siguientemanera:public inter#ace :nter#a {

    int atributo = !;void metodo();

    2

    class lase implements :nter#a{public void metodo(){

    22

  • 8/17/2019 3 Programación Orientada a Objetos

    65/73

    #nterfaces

    Cuando declaras un atributo en uninter)a* tiene los siguiente modicadorespor omisión:

    public static

     > un método:

    public

    Estos no pueden ser cambiados$

  • 8/17/2019 3 Programación Orientada a Objetos

    66/73

    #nterfaces

    %na inter)a* puede ser 4eredada porotra inter)aces ejemplo:

    public inter#ace :nter#a* {int atributo = !;void metodo();

    2

    inter#ace :nter#a e,tends:nter#a*{

    2

  • 8/17/2019 3 Programación Orientada a Objetos

    67/73

    #nterfaces

    %na inter)a* puede serimplementada por una claseabstracta' pero no es necesario

    implementar todos sus métodos:public inter#ace :nter#a* {

    int atributo = !;void metodo();

    2

    abstract class abstracta implements:nter#a*{

    2

  • 8/17/2019 3 Programación Orientada a Objetos

    68/73

    #nterfaces

    Ejercicio de inter)aces:

    0oladorNNInter)aceOO

    6despegar9: void6aterri*ar9: void

    4ovilNNInter)aceOO

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

    uto4ovil

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

    4otoicleta*

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

    vion*

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

    Pa

  • 8/17/2019 3 Programación Orientada a Objetos

    69/73

    #nterfaces

    #tro ejercicio de inter)aces:

    0oladorNNInter)aceOO

    6despegar9: void6aterri*ar9: void

    4ovilNNInter)aceOO

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

     "uto#o$il 

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

    #otoCicleta1

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat

     "$ion1

    6acelerar9incremento: 8oat: 8oat6)renar9decremento: 8oat: 8oat6moverAlerones9: void

     "$e

    6despegar9: void6aterri*ar9: void6batirAlas9: void

    2alcon anario 9oing * 1ucatiSuper9i>e ?awasa>iin

  • 8/17/2019 3 Programación Orientada a Objetos

    70/73

    #nterfaces

    eamos como utili*ar el polimorsmocon las clases abstractas 5 lasinter)aces:

    olador volador / ne< Halcon9.

    Ave ave / ne< Canarioi9.

    Hagamos un ejemplo

  • 8/17/2019 3 Programación Orientada a Objetos

    71/73

    Ejercicios de "epaso

  • 8/17/2019 3 Programación Orientada a Objetos

    72/73

  • 8/17/2019 3 Programación Orientada a Objetos

    73/73

    Preguntas

    +El instructor 4a sabido comunicar lasideas-

    +Los contenidos 4an sido claros-

    +El material 4a sido suciente paraentender los conceptos-

    +@ué calicación le dar&as a el curso

    4asta a4ora- +@ué aconsejar&as al instructor para

    mejorar el curso 5 entiendas mejor losconceptos-