Fundamentos de Programacion POO
-
Upload
mcoderquep7551 -
Category
Documents
-
view
265 -
download
0
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 );