Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Temario
Clases Miembros
Atributos Mtodos
Constructores El this
Mensajes Atributos y Variables Locales Operador de acceso a Miembros Accesibilidad a miembros Encapsulacin Interfaz
Prologo
Ya estuvimos viendo los componentes bsicos del lenguaje java
Reglas Lxicas, Sintcticas y Semnticas Datos Operaciones elementales
Los programas que hicimos son del estilo estructurados Es hora de dar el paso y aplicar la POO
Prologo (II)
La POO no deja de ser imperativa
Solo que cambiamos el enfoque de abordar el problema.
En vez hacer nfasis en separar los datos de las operaciones que manipulan estos datos Pasamos a considerar los datos y las operaciones que los manipulan encapsulados en objetos.
Prologo (III)
La POO es tambin en parte estructurada y modular
Hay seguir un estilo disciplinado de escritura en la programacin Separar en mdulos (Clases) diferentes partes del programa.
Prologo (IV)
En adelante nos vamos a dedicar a estudiar los aspectos y las herramientas que nos brinda las POO para afrontar la tarea de realizar programas
Vamos a salir del main Vamos a pensar en clases y objetos, distribuyendo a los algoritmos y datos a lo largo de los mtodos y atributos.
Clases
Definicin Terica: Concepto que abarca a un conjunto de objetos con caractersticas similares. Definicin Prctica: Una clase es un molde a partir del cual creamos objetos
En este molde definimos las caractersticas generales de los objetos que contiene
Porque un molde?
Tomemos la clase Bicicleta
Con esta puedo crear 1, 10, 2000 bicicletas
Cada una con su estado particular.
Si tuviera que salir a describir 2000 bicicletas por separado (sin el molde) tendra muchsimo trabajo por hacer.
Diseamos la clase una vez y la usamos para construir tantos objetos como queramos.
Clases (II)
Disear una clase consiste en especificar para cada objeto de la misma:
Sus atributos Sus mtodos Como se construyen objetos
Clases (III)
Una clase en Java se guarda en un archivo de texto (el cual podemos abrir con un editor de notas y ver perfectamente su contenido). Recuerden siempre que el nombre de archivo tiene una extensin .java. Y la definicin de la clase que contiene debe tener exactamente el mismo que el nombre del archivo. As si tengo el archivo Persona.java entonces la clase se va llamar Persona.
La palabra Bicicleta es un identificador que definimos para poder hacer referencia a la clase que envuelve a los distintos objetos bicicletas El comienzo y el final de las llaves indican el cuerpo de la clase
Atributos
Las propiedades o caractersticas que tiene un objeto se almacenan en variables que se conocen como atributos.
Atributos (II)
Se declaran dentro del cuerpo de la clase
Son variables que guardan los datos que corresponden al valor de un propiedad de un objeto. El valor de todos los atributos de un objeto en un instante determina su estado
Atributos (III)
Sintaxis:
public class XX {
<MODIFICADORES><TIPO> <IDENTIFICADOR VARIABLE> = <EXPR>;
Atributos (IV)
Ejemplo: public class Bicicleta { private int velocidad; private int cambio; private boolean estaRota; }
As cada bicicleta instanciada de esta clase va a tener su velocidad, su cambio y su indicador de si estaRota o no. Cada instancia tiene un juego de atributos propios con sus valores particulares.
Mtodos
En la Teora: Los mtodos sirven para definir el comportamiento que manifiestan los objetos de una clase. En la Prctica: Son los lugares donde se escriben sentencias para manejar instrucciones y datos
Los algoritmos
Mtodos (II)
Sintaxis:
public class XX { <MODIFICADORES> <TIPO> <IDENTIFICADOR MTODO> (<PARAMETROS>) { <CUERPO DEL MTODO> } }
Mtodos (III)
Ejemplo:
public class BuenaPersona { public void saludar () { boolean deDia = true; int personasSaludo = 2; if (deDia) System.out.println(Buenas das caballeros); else System.out.println(Buenas tardes caballeros); } }
Nota: Si no hay parmetros, igual deben ir los parntesis de apertura y cierre. Al igual que pseudo cdigo.
Mensajes
Los mtodos son porciones de cdigo ejecutables Cuando un mtodo de un objeto es invocado se dice que se le enva un mensaje o solicitud a tal objeto para que realice esa accin.
Invocar mtodo a del objeto X equivale a enviar mensaje a o solicitud a al objeto X
Modulo Invocante
Objeto x
Mensajes (II)
Un mensaje se compone de:
Objeto receptor Mtodo que se ejecuta Argumentos (si los requiere)
Ejemplos:
scannedor.nextInt(); // envo de mensaje nextInt cadena.lenght(); // envo de mensaje lenght
Mtodos + Atributos
public class Bicicleta { private int velocidad; public void acelerar () { velocidad = velocidad + 1; } }
velocidad tiene la pinta de ser un variable no declarada dentro del mtodo acelerar. !Pero sin embargo funciona! que ocurre?
Con velocidad me refiero automticamente al atributo del objeto que estoy acelerando. Tiene mucho sentido.
Veamos un poco ms porque
Para invocar un mtodo se requiere un objeto concreto, que es justamente al que le solicitamos que lleve a cabo dicha funcin.
Y Ahora la usamos
public class Programa { public static void main (String args[]) { int x = 5 boolean mePersiguenLadrones = true; Bicicleta bici; bici = new Bicicleta (); // instanciamos un objeto bicicleta // la uso pasndole como argumentos valores literales bici.establecerCambio (2); // como le puedo pasar expresiones en general, tambin le puedo pasar expresiones que se calculen con literales bici.establecerCambio (2 + 10); // como sabemos las expresiones tambin pueden componerse de variables, por lo tanto esto es muy valido tambin. bici.establecerCambio (x + 4); if (!mePersiguenLadrones) bici.aplicarFrenos(); // me detengo solo s no me persiguen ladrones. } }
Parmetros y Argumentos
Los parmetros son variables de un mtodo que asumirn un valor cuando se invoca dicho mtodo. El valor que efectivamente se le asigna a un parmetro de un mtodo cuando se invoca se llama argumento.
Dicho valor es el resultado de una expresin que retorna un valor del mismo tipo que del parmetro.
El orden en que se declaran los parmetros y se pasan los argumentos establece la correspondencia entre uno y otro.
+ 1;
vs.
public void acelerar (int cuanto) { aceleracin = cuanto; }
El Constructor
Antes de poder usar un objeto es obligatorio construirlo Para construir objetos usamos los constructores En trminos prcticos: un constructor es un mtodo especial que sirve para inicializar el estado de un objeto.
El constructor (II)
Se declara y define como cualquier otro mtodo solo que el nombre es el mismo que el nombre de la clase y no tiene un tipo de retorno especificado.
public class Bicicleta { private int cambio; private int velocidad; public Bicicleta (int cambioInicial, int velocidadInicial) { cambio = cambioInicial; velocidad = velocidadInicial; } }
Usando el constructor
Como invoco el constructor para crear objetos? Se lo invoca usando el operador new seguido del nombre del constructor. El nombre del constructor indica:
De que clase se quiere crear un objeto
Nombre constructor = Nombre Clase
Como se va a inicializar.
new != Constructor
El new es un operador que crea una instancia y devuelve una referencia Lo que toma como operando (a derecha) es el constructor que se invoca para inicializar la instancia fabricada.
Dentro del constructor esta el cdigo para inicializarla
23 Velocidad 2 Cambio
miBici
El uso ms comn del this es porque el nombre de un atributo es ocultado por un parmetro del mismo nombre.
Ejemplo prctico
public class Persona { private String nombre; public Persona (String nombre) { Como diferencio el atributo nombre del parmetro nombre? } }
Ejemplo prctico
public class Persona { private String nombre; public Persona (String nombre) { this.nombre = nombre; } } this.nombre: Me refiero al atributo nombre (a secas): Me refiero al parmetro. Todo esto se extiende para el caso de cualquier variable local.
+ +
Un variable local es una variable declarada dentro del cuerpo de un mtodo o un parmetro del mismo.
Es accesible solamente dentro del mtodo.
Pregunta
Se puede acceder a todos los miembros?
Respuesta
No! Esto depende de desde donde se quiera acceder y la visibilidad que tenga el miembro.
Acceso a Miembros
Vamos a empezar dos visibiblidades bsicas:
private: Los miembros declarados como private no son accesibles desde otras clases, solo se pueden acceder desde la misma clase que los define. public: Los miembros declarados como public son accesibles desde otras clases.
No se puede acceder al atributo aceleracin desde la clase Principal porque es privado Se puede acceder al mtodo acelerar desde la clase Principal porque es pblico.
Si bien es correcto el cdigo y el programa compilara, y hasta, ejecutara, estoy estableciendo un estado invlido.
Encapsulacin
Estos permisos de acceso a miembros son el fundamento del mecanismo de encapsulacin, el cual permite ocultar detalles de la implementacin
Invocamos los mtodos para gestionar el estado de un objeto y no lo modificamos directamente usando sus atributos.
Encapsulacin (II)
Que ganamos? No tenemos que ser conocedores de las reglas internas o la lgica que lleva un objeto, solamente lo usamos y sabemos que los mtodos harn el trabajo que necesitamos. Por ejemplo:
scanner.nextInt(); A alguno le intereso se efecta internamente la lectura del teclado?
Encapsulamiento
Los objetos deben saber cmo comportarse
Deben manejar su propio comportamiento No debemos manipular sus detalles desde afuera En vez de: cuenta setSaldo: [ cuenta getSaldo + monto ]. Hacemos: cuenta depositar: monto.
Interfaz
Se trata de la parte del objeto que es visible para el resto de los objetos.
Es decir, que es el conjunto de miembros visibles un objeto que permiten operarlo.
Ejercitacin
Prctica 1
FIN