unidad 3 clases, objetos e intsancias

41
Unidad 3 PROGRAMACIÓN ORIENTADA A OBJETOS ESTRUCTURA DE UNA CLASE

Upload: cindy-adriana-bohorquez-santana

Post on 21-Jan-2018

164 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Unidad3PROGRAMACIÓNORIENTADAAOBJETOS

ESTRUCTURADEUNACLASE

Page 2: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Clases yObjetos

� Una clase describe un grupo de objetos que compartenpropiedades y métodos comunes

� Una clase es una plantilla que define qué forma tienenlos objetos de la clase

� Una clase se compone de:� Información:campos (atributos,propiedades)� Comportamiento:métodos (operaciones,funciones)

� Unobjeto es una instancia deuna clase

“Juan Pérez”StringVentana (tiempo de ejecución)Ventana (tiempo de diseño)Juan PérezEmpleadoLa MonedaCasaSodimacEmpresaObjetoClase

Page 3: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Implementacióndeunaclase

� Elementosqueaparecenenlaimplementacióndeunaclase:� Lapalabrareservadathis.� Modificadoresestáticos,dinámicosyfinalesdeunaClaseysuscomponentes.

� Modificadoresdevisibilidadpublic yprivate deunaClaseysuscomponentes.

Page 4: Unidad 3 CLASES, OBJETOS E INTSANCIAS

DefinicióndeAtributos

� Los Atributos de una Clase almacenan los datos de laClase.

� Por lo general, los atributos se suelen definir privados yse definen métodos consultores y modificadores. Deesta manera se garantiza la encapsulación u ocultaciónde datos.

� Los atributos se alojan en variables.

Page 5: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Atributosdelaclase

classCirculo {//atributos//métodos//constructores//main()

}

Page 6: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ÁmbitodelasvariablesEn una clase pueden definirse tres tipos de variables:� Variables de clase o variables estáticas (static variables)

§ Son compartidas por todos los objetos de la clase, y de otras clases si elacceso a estas lo permite.

§ Pueden existir, aún asi no se hayan creado objetos y duran el tiempo quela clase se encuentra cargada en memoria.

§ Se guardan en la RAM, en el static storage.� Variables de instancia o de objeto

§ Son variables guardadas en cada objeto de la clase.§ Se guardan en la RAM, en el heap storage.

� Variables locales a los métodos.§ Duran hasta cuando se termina de ejecutar el método.§ Se guardan en la RAM, en el stack storage.

Page 7: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Variables

local

Deinstancia

Estática

Page 8: Unidad 3 CLASES, OBJETOS E INTSANCIAS

classCirculo {//camposdoubleradio=5;Stringcolor;staticint numeroCirculos =0;staticfinaldoublePI=3.1416;//métodos//constructores//main()

}

nradio y color son variables de instancia, hay una copia de ellas por cada objeto Circulo

nnumeroCirculos y PI son variables static, están sólo una vez en memoria; PI además es constante (final): no puede modificarse

Page 9: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Acceso avariables

� Acceso avariablesdeinstancia:seutiliza lasintaxis"objeto."

Circulo c1=newCirculo();c1.radio=5;c1.color="rojo";//si c1es null,//segenerauna excepción NullPointerException

� Acceso avariablesstatic:seutiliza lasintaxis "clase."Circulo c1;Circulo.numeroCirculos++;System.out.println(Circulo.PI);

9

Page 10: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ReferenciasenJava

public class TestClase {public static void main(String args[]){

Circuloc1=newCirculo();Circuloc2;c2=c1;

}}�CreacióndeObjetosdeunaClase:

� c1esunavariableReferenciaalnuevoObjetocreado.� c2esunavariableReferenciaaningúnObjeto,i.e.trasladeclaraciónCirculoc2;c2==null

� ¿Quéocurresiseejecutac2=c1;?

Page 11: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ReferenciasenJava

�Una variable Referencia almacena la dirección dememoria en la que se encuentra el Objeto al quereferencia.

�Alhacer:�Circuloc2=c1;� Lavariablereferenciac2pasaatenerelmismovalorque7c1,esdecir,ambasapuntanalmismoobjeto.

Page 12: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definicióndeconstructores

�Unconstructores unmétodo especialinvocado parainstanciar einicializar unobjeto deuna clase� Invocado conlasentencia new� Tiene elmismo nombre quelaclase� Puede tener ceroomás parámetros� Notiene tipo deretorno,ni siquiera void� Unconstructornopúblico restringe elacceso alacreación deobjetos

� Si la clase no tiene ningún constructor, el sistemaprovee un constructor default, sin parámetros

� Si la clase tiene algún constructor, debe usarse algunode los constructores definidos al instanciar la clase (elsistema no provee un constructor default en este caso)

Page 13: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definicióndeconstructores

classCirculo {...//constructorespublicCirculo(){radio=1;

}publicCirculo(int r){radio=r;

}

voidf(){Circulo c=newCirculo(30);...

}}

Dosdiferentesconstructores

Instanciaciónusandoelsegundoconstructor

Page 14: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definicióndeconstructores

� Los Constructores de una clase permiten dar un valorinicial a los atributos del objeto. Ejemplo: definición delos métodos Constructores de Circulo

Page 15: Unidad 3 CLASES, OBJETOS E INTSANCIAS

InvocaciónentreConstructores

� Lapalabrathis puede ser utilizada en laprimera líneadeunconstructorparainvocar aotro constructor.classCirculo {privatedoubleradio;privatestatic int numeroCirculos =0;Circulo(int radio){this.radio =radio;Circulo.numeroCirculos++;

}Circulo(){this(10); //radiodefault:10

}}

This hacereferenciaalobjetosobreelqueseinvocaelmétodoysirvde paraevitar

aliasing denombres

Page 16: Unidad 3 CLASES, OBJETOS E INTSANCIAS

¿This?

� Sirve para hacer referencia a un método o propiedaddel objeto actual.

Page 17: Unidad 3 CLASES, OBJETOS E INTSANCIAS

¿This?

� ¿Donde se puede usar el this?Puedereferirseacualquiermiembrodelobjetoactualdesdedentrodeunmétododeinstanciaounconstructor.Siseintentautilizardentrodeun método estático (Staticmethods)lanzara:

"Cannot useThis inastatic context"

Page 18: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definición deMétodos

� Instrucciones que operan sobre los datos de un objetopara obtener resultados.

� Pueden retornar un valor o pueden ser declaradosvoid para indicar que no retornan ningún valor

� Pueden ser de instancia o static.

Page 19: Unidad 3 CLASES, OBJETOS E INTSANCIAS

classCirculo {//camposdoubleradio=5;Stringcolor;staticint numeroCirculos =0;staticfinaldoublePI=3.1416;//métodosdoublegetCircunferencia(){returngetCircunferencia(radio);

}staticdoublegetCircunferencia(doubler){return2*r*PI;

}//constructores//main()

}

Método de instancia, tiene acceso directo a las variables de instancia del objeto sobre el que se invoca

Método static, no tiene acceso directo a variables de instancia

Page 20: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definición deMétodos

� LosMétodosdeunaclasedefinensufuncionalidad.� Ejemplo:DefinicióndeMétodosConsultoresenlaclaseCirculo.

�Al definir como privados todos los atributos de Circulo,se deben proporcionar métodos para acceder a su valor.

Sepodríautilizarthisparareferenciaraatributosperonoesnecesariopuestoquenohayaliasing de

nombres.

Page 21: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definición deMétodos

�Al definir como privados todos los atributos de Circulo,se deben proporcionar métodos para modificar su valor.� Ejemplo:definicióndelosMétodosModificadores deCirculo.

Page 22: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Definición deMétodos

� Ejemplo:definicióndeotrosMétodosdeCirculo

� El uso de un método estático permite definirlo a nivelde clase, no a nivel de instancia (objeto individual).� SedeberáinvocarcomoCirculo.leerCirculo(...).

Page 23: Unidad 3 CLASES, OBJETOS E INTSANCIAS

� Crea una clase Libro que modele la información que se mantiene enuna biblioteca sobre cada libro: título, autor (usa la clase Persona),ISBN, páginas, edición, editorial , lugar (ciudad y país) y fecha deedición (usa la clase Fecha). La clase debe proporcionar los siguientesservicios:� accedentesymutadores,� métodoparaleerlainformacióny� métodoparamostrarlainformación.Esteúltimométodomostrarálainformacióndellibroconesteformato:� Título:Introduction toJavaProgramming� 3a.edición� Autor:Liang,Y.Daniel� ISBN:0-13-031997-X� Prentice-Hall,NewJersey(USA),viernes16denoviembrede� 2001� 784páginas

Page 24: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Sobrecargademétodos(Overloading)� La firma de un método es la combinación del tipo dedato que regresa, su nombre y su lista de argumentos.

� La sobrecarga de métodos es la creación de variosmétodos con el mismo nombre pero con diferentesfirmas y definiciones.

�Se utiliza para reutilizar el nombre de un métodopero con diferentes argumentos.

Page 25: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Reglasparasobrecargarunmétodo� Los métodos sobrecargados deben de cambiar la listade argumentos.

� Pueden cambiar el tipo de retorno.�Un método puede ser sobrecargado en la misma clase oen una subclase.

� Pueden cambiar el modificador de acceso.� Pueden declarar nuevas o más amplias excepciones.

Page 26: Unidad 3 CLASES, OBJETOS E INTSANCIAS

�Veamosunmétodoquesedeseasobrecargar:

� LossiguientesmétodossonsobrecargaslegalesdelmétodocambiarTamano():

Page 27: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Heap,Stack yVariablesdereferencia� La memoria está dividida en tres partes, Zona de Datos,Stack y Heap.

� Existen dos espacios en donde se ejecutan nuestrasaplicaciones: Stack y Heap.

� Stack almacena variables locales y los métodos enejecución

�Heap guarda las variables de instancia y los objetos�Cada hilo de la aplicación tiene su propia pila (Stack)pero todos comparten el mismo montículo (Heap).

Page 28: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Stack

�Almacena:� Referenciasaobjetos(instacias)� Datosdetipoprimitivo(int,float,char…)� Variableslocales� Parámetrosderetornodelosmétodos

� Es estático, si lo llenamos, caeríamos en unStackOverflowError

public void metodo(){metodo();

}

Page 29: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Heap

� Los objetos son creados, eliminados o modificados enesta parte de la memoria.

� La Java Virtual Machine (JVM), le asigna un espaciopredeterminado de memoria y según se vayarequiriendo, la JVM le seguirá proporcionando másmemoria.�Los elementos almacenados no pueden sereliminados directamente sino con el GarbageCollector.

Page 30: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ComointeractúanelHeap yelStack� Lasreferenciaspuedenapuntaraelementosdelheap (esdecir,alosobjetos).

� Lasreferenciastienenuntipo,queesaltipodeobjetoquepuedenapuntarlasreferencias.

Crealareferenciaenelstack

Crea el objetoen el heap yen el mismomomentohacemos lareferenciadesde el stack

Page 31: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ComointeractúanelHeap yelStack

Un objeto puede estar siendo apuntado por muchas referencias, pero una referencia solo apunta a un objeto.

Page 32: Unidad 3 CLASES, OBJETOS E INTSANCIAS

InstanciaciónyReferencias

� Los objetos se crean con el operador new, y se manejanmediante referencias

� Los objetos se crean en el área de memoria dinámicaconocida como el heap

� Unareferenciacontieneladireccióndeunobjeto(essimilaralospunterosdeotroslenguajes)

� Unaasignaciónentreobjetosesunaasignacióndereferencias� Circuloc1=newCirculo();� Circuloc2=c1;

Page 33: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Garbage Collection

� Es unprocesodelaJVMqueestárevisandoqueobjetospuedenserborradosycualesno.

� Esunprocesodebajaprioridad,porloquenosepasaentodomomentoliberandomemoria,sinoquepasadevezencuando.

Elprimerobjetosequedasinreferencia

Page 34: Unidad 3 CLASES, OBJETOS E INTSANCIAS

PasodeParámetros

� EnJavaelpasodeparámetrosserealiza"porvalor“.� Significa que cuando un argumento se pasa a unafunción, la función recibe una copia del valor original.Por lo tanto, si la función modifica el parámetro, sólo lacopia cambia y el valor original permanece intacto.� Argumentosdetiposprimitivos

� Si un método modifica el valor de un parámetro, este cambio sóloocurre al interior del método; al retornar el método, se mantieneel valor original

� Argumentosdetiporeferencia(objetos)� Al retornar el método, la referencia pasada como parámetro siguereferenciando al mismo objeto; sin embargo, los campos delobjeto podrían haber sido modificados por el método

Page 35: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ArrayList

�Clase que permite almacenar datos en memoria deforma similar a los Arrays.

� Estructuradinámicadedatos.� http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

�ArrayList nombreArray =newArrayList();� Puedecontenercualquiertipodeelementos.

Page 36: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Ventajas

�No es necesario declarar su tamaño como pasa conlos Arrays porque el almacenamiento es dinámico locual permite aumentar o disminuir el consumo dememoria de acuerdo a las necesidades.

� La clase ArrayList tiene muchos métodos predefinidosque hacen más fácil su uso. Por ejemplo: ara saber siun array cuenta con un dato tendrás que recorrerloentero. Sin embargo un ArrayList te devuelve elobjeto que en la colección tiene ese valor.

�Un ArrayList colecciona objetos, un array coleccionadtos de un mismo tipo, que además es básico.

Page 37: Unidad 3 CLASES, OBJETOS E INTSANCIAS

MétodosdeArrayList

Page 38: Unidad 3 CLASES, OBJETOS E INTSANCIAS

ArrayList

Page 39: Unidad 3 CLASES, OBJETOS E INTSANCIAS

RecorrerunArray

� Podemosrecorrerlodeformaclásicaconun buclefor:

� Sielarraycontieneobjetosdetiposdistintosodesconocemoseltipo:

Page 40: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Usodefor each

� Facilita el recorrido de objetos existentes en una colecciónsin necesidad de definir el número de elementos a recorrer.

� Sintaxis:

“ParacadaelementodeltipoTipoARecorrer queseencuentredentrodelacolecciónnombreDeLaColección ejecutalas

instruccionesqueseindican”

� Evita el uso de Iteradores o de un bucle for normal.

Page 41: Unidad 3 CLASES, OBJETOS E INTSANCIAS

Ejercicio

�Crea una clase denominada ListaCantantesFamosos queal ser inicializada contenga un ArrayList con tres Stringsque sean el nombre de cantantes famosos. Crea unaclase test con el método main que inicialice un objetoListaCantantesFamosos y usando un forextendidomuestre los cantantes en la lista por pantalla.Se debe pedir al usuario un nombre más de cantantefamoso, y una vez introducido mostrar la listaactualizada usando un for extendido.