Fundamentos de Programacion POO

download Fundamentos de Programacion POO

of 27

Transcript of Fundamentos de Programacion POO

  • 8/7/2019 Fundamentos de Programacion POO

    1/27

    Fundam ent os deProgramac in

    Def in ic in de Clases

    Jos A. Maas Dpto. de Ingeniera de Sistemas Telemticos

    http://www.dit.upm.es/~pepe/doc/fprg/29.9.2009

  • 8/7/2019 Fundamentos de Programacion POO

    2/27

    29.9.2009 2 / 27

    bib l iograf a

    David J. Barnes & Michael Klling

    Objects First w ith Java A Practical Introduction using BlueJ, 4th edPrentice Hall / Pearson Education, 2008

    http://www.bluej.org/Existe versin en espaol:"Programacion orientada objetos con Java"

    captulo 2definicin de clases

  • 8/7/2019 Fundamentos de Programacion POO

    3/27

    29.9.2009 3 / 27

    MaquinaBi l l e tes . j ava

    Campos

    ConstructorMtodos

    public class MaquinaBilletes {private int precio;

    MaquinaBilletes(int coste) { ... }

    public int getPrecio() { ... }public void inserta(int cantidad) { ... }

    }

  • 8/7/2019 Fundamentos de Programacion POO

    4/27

    29.9.2009 4 / 27

    c a m p o s

    Guardan el estado del objeto

    // El precio de un tiquet.private int precio;

    // Dinero introducido en esta venta.

    private int saldo; // Dinero acumulado en la mquina.private int total;

  • 8/7/2019 Fundamentos de Programacion POO

    5/27

    29.9.2009 5 / 27

    c a m b io d e e s t a do

    inserta(20)

  • 8/7/2019 Fundamentos de Programacion POO

    6/27

    29.9.2009 6 / 27

    c o n s t r u c t o r e s

    Sirven para crear objetosinicializan el estado

    Parecen mtodos; pero ...se llaman igual que la claseno devuelven nada

    MaquinaBilletes(int coste) {precio = coste;

    saldo = 0;total = 0;}

  • 8/7/2019 Fundamentos de Programacion POO

    7/27

    29.9.2009 7 / 27

    c o ns t r uc c i n de 1 o bj et o

    new MaquinaBilletes(12)

  • 8/7/2019 Fundamentos de Programacion POO

    8/27

    29.9.2009 8 / 27

    ob jet os nuevos

    El constructor debe asignar un valor a cadacampo... si no lo asigna, se pone a cero

    enteros: 0reales: 0.0boolean: falseotros: null

  • 8/7/2019 Fundamentos de Programacion POO

    9/27

    29.9.2009 9 / 27

    as ignac in

    ... o como meter un valor en un campo ...precio = coste ;

    en el lado izquierdo aparece el nombre delcampoen el lado derecho aparece el valoren el lado derecho puede aparecer unaexpresin

    saldo = saldo + cantidad;saldo = saldo precio;

  • 8/7/2019 Fundamentos de Programacion POO

    10/27

    29.9.2009 10 / 27

    m t o do s d e a c c e so

    familiarmente conocidos como getters si hay un campo X de tipo T

    public T getX() { return x; }

    si hay un campo X de tipo boolean

    public boolean isX() { return x; }

  • 8/7/2019 Fundamentos de Programacion POO

    11/27

    29.9.2009 11 / 27

    m t o do s d e m o di f i c a c i n

    familiarmente conocidos como setters si hay un campo X de tipo T

    public void setX(T v) { x = v; }

    si hay un campo X de tipo boolean

    public void setX(boolean v) { x = v; }

  • 8/7/2019 Fundamentos de Programacion POO

    12/27

    29.9.2009 12 / 27

    impres in

    Escribe en pantallaSystem.out.print(texto);System.out.println(texto);

    public void imprime() {System.out.println("#####################");

    System.out.println("# Billete");System.out.println("# Madrid - VillaBella");System.out.println("# " + precio + " euros.");System.out.println("#####################");System.out.println();

    total = total + saldo;saldo = 0;

    }

    + = concatena

  • 8/7/2019 Fundamentos de Programacion POO

    13/27

    29.9.2009 13 / 27

    m e j o r a s

    La clase que hemos visto es un poco pobreno verifica que el precio sea razonableno controla que se inserten cantidades negativasno controla que se ha metido suficiente dinerono devuelve el cambio

    MaquinaBilletes MaquinaBilletes2

  • 8/7/2019 Fundamentos de Programacion POO

    14/27

    29.9.2009 14 / 27

    e je c u c i n c o nd ic i on al

    if (expresin_booleana) {haz_esto ;

    } else {haz_lo_otro ;

    }

    if (expresin_booleana) {haz_esto ;

    }

    public void inserta(int cantidad) {if (cantidad > 0)

    saldo = saldo + cantidad;else

    System.out.println("solo cantidades positivas");}

  • 8/7/2019 Fundamentos de Programacion POO

    15/27

    29.9.2009 15 / 27

    e je c u c i n c o nd ic i on al

    nota= examenJunio();

    if (nota < 5.0) {nota= examenSeptiembre();}

    Las llaves son opcionalessi slo hay una sentencia

    El sangrado no significanada

    condicin

    bloque

    true

    false

  • 8/7/2019 Fundamentos de Programacion POO

    16/27

    29.9.2009 16 / 27

    Errores t p ic os

    if (condicion)sentencia1;

    sentencia2;sentencia3;

    if (condicion) ;sentencia;

    Regla: En caso de duda o ambigedad, ponga llaves.

  • 8/7/2019 Fundamentos de Programacion POO

    17/27

    29.9.2009 17 / 27

    Ejec uc in c ondic iona l

    String saludo;if (hora < 14) {

    saludo= buenos das;} else {

    saludo= buenas tardes;

    }

    condicin

    bloque 1

    true

    false

    bloque 2

  • 8/7/2019 Fundamentos de Programacion POO

    18/27

    29.9.2009 18 / 27

    Ambigedad

    if (a) if (b) S1; else S2;significaif (a) { if (b) S1; else S2; }

    error tpicoif (a)

    if (b)S1;

    elseS2;

  • 8/7/2019 Fundamentos de Programacion POO

    19/27

    29.9.2009 19 / 27

    var iab les

    Son contenedores de valoresGrficamente son cajas

    con un cierto nombre: fijode un cierto tipo: fijocon un cierto valor: variable

  • 8/7/2019 Fundamentos de Programacion POO

    20/27

    29.9.2009 20 / 27

    var iab les

    Tipadasslo admiten valores de un cierto tipo

    El valor puede cambiarmediante sentencias de asignacinvariable = expresin ;

    Programa: serie planificada de sentencias deasignacin que llevan a las variables

    desde el valor inicial (datos del problema)al valor final (solucin del problema)

  • 8/7/2019 Fundamentos de Programacion POO

    21/27

    29.9.2009 21 / 27

    sent enc i a s de as ignac in

    variable = expresin ;

    Parte izquierdauna variable en la que cargamos el valor de laexpresin

    Parte derechauna expresin cuyo valor se evalasi aparece una variable, se toma su valor

    x = x + 1 ; no es una ecuacin; es la asignacin de un nuevo valor

  • 8/7/2019 Fundamentos de Programacion POO

    22/27

    29.9.2009 22 / 27

    las veremos ms adelante

    hay var iab les ...

    ... de objetocampos

    ... de mtodoparmetrosvariables locales

    ... de clasestatic

    e invariablesfinalesconstantes

  • 8/7/2019 Fundamentos de Programacion POO

    23/27

    29.9.2009 23 / 27

    var i ables de ob je t o

    Nacen con la creacin del objeto Se ven dentro del objetoSe declaran en la classLas pueden usar los mtodos del objeto

    Las pueden usar los demsnombre_del_objeto . campo... salvo que sean private

    Cada objeto tiene las suyas

  • 8/7/2019 Fundamentos de Programacion POO

    24/27

    29.9.2009 24 / 27

    c a m p os pr iv at e

    Reglatodos los campos deben ser private

    Por qu?para que todos los accesos estn controlados pormedio de mtodossi un da queremos cambiar los campos(por ejemplo, para acelerar la ejecucin)

    bastar ajustar los mtodos

  • 8/7/2019 Fundamentos de Programacion POO

    25/27

    29.9.2009 25 / 27

    var i ables loc a le s

    Parmetrosse declaran en la cabecera

    nacen cuando se invoca el mtodo se ven dentro del mtododesaparecen con el mtodo

    Variables locales nacen cuando se declaran en el cuerpo se ven dentro, desde que se declarandesaparecen con el mtodo

  • 8/7/2019 Fundamentos de Programacion POO

    26/27

    29.9.2009 26 / 27

    var i ables loc a le s

    Cada vez que se llama al mtodo se repite elciclo

    creacin modificaciones destruccin

    class Punto {

    private double x, y;

    double distancia (double x2, double y2) {

    double dx = x2 getX();

    double dy = y2 getY();

    return Math.sqrt(dx*dx + dy*dy);

    }

    }

  • 8/7/2019 Fundamentos de Programacion POO

    27/27

    29.9.2009 27 / 27

    r e s u m e n

    Conceptos que hemos vistocamposconstructores

    inicializacinmtodos: getters & settersejecucin condicionalvariables

    asignacinvariables localesmbito de visibilidadmbito de existencia

    expresionesexpresiones booleanas

    System.out.println( texto );