Programación Orientada a Objetos en Java

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Curso de java básico (scjp)
Curso de java básico (scjp)
Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
Herencia en C#.
Fundamentos de la programación orientada a objetos
Uso de variables de tipo referencia
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
El proceso de desarrollo de software
Lección 1 Introducción a la POO
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Tratamiento de listas en Java
UNIVERSIDAD LATINA (UNILA)
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Objetos y Clases en Java
Marzo 2007 Lenguajes Visuales Clase III.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Medio de tele-comunicación
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Creación de Aplicaciones
Curso Programación en Java
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Ciencias.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
El lenguaje de programación Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Material de apoyo Unidad 2 Fundamentos de programación
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Patrones Creacionales
Clases y objetos. La unidad fundamental del lenguaje Java es la clase, que proporciona la estructura de los objetos y mecanismos para fabricarlos, a partir.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Herramientas de polimorfismo y herencia en C++
Manejo de Punteros y objetos en memoria dinámica en C++
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Java.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
CONCEPTOS.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación Orientada a Objetos
Transcripción de la presentación:

Programación Orientada a Objetos en Java Fast Track to Java Unit 1: Overview and Positioning Programación Orientada a Objetos en Java Unidad 2 Clases y Objetos

Temario Clases Objetos Campos Métodos Encapsulamiento Propiedades Instanciación Constructores

OOP En Object-Oriented Programming (OOP), o Programación Orientada a Objetos, un programa está hecho de clases, con sus campos y métodos La creación de un programa involucra ensamblar objetos y hacerlos interactuar entre ellos

Curso de Java Visión Global Clases y Objetos Una clase describe un grupo de objetos que comparten propiedades y métodos comunes Una clase es una plantilla que define qué forma tienen los objetos de la clase Una clase se compone de: Información: campos (atributos, propiedades) Comportamiento: métodos (operaciones, funciones) Un objeto es una instancia de una clase “Juan Pérez” String Ventana (tiempo de ejecución) Ventana (tiempo de diseño) Juan Pérez Empleado La Moneda Casa Sodimac Empresa Objeto Clase 4

Definición de una Clase class Circulo { // campos // métodos // constructores // main() }

Campos Los objetos almacenan información en sus campos Existen dos tipos de campos: de instancia y static (de clase) Campos de instancia Hay una copia de un campo de instancia por cada objeto de la clase El campo de instancia es accesible a través del objeto al que pertenece Campos static (de clase) Hay una única copia de un campo static en el sistema (equivalente a lo que en otros lenguajes es una variable global) El campo static es accesible a través de la clase (sin necesidad de instanciar la clase)

Campos class Circulo { // campos double radio = 5; String color; radio y color son variables de instancia, hay una copia de ellas por cada objeto Circulo class Circulo { // campos double radio = 5; String color; static int numeroCirculos = 0; static final double PI = 3.1416; // métodos // constructores // main( ) } numeroCirculos y PI son variables static, están sólo una vez en memoria; PI además es constante (final): no puede modificarse

Curso de Java Visión Global Acceso a Campos Acceso a variables de instancia: se utiliza la sintaxis "objeto." Circulo c1 = new Circulo(); c1.radio = 5; c1.color = "rojo"; // si c1 es null, // se genera una excepción NullPointerException Acceso a variables static: se utiliza la sintaxis "clase." Circulo.numeroCirculos++; System.out.println(Circulo.PI); 8

Curso de Java Visión Global Métodos Instrucciones que operan sobre los datos de un objeto para obtener resultados Tienen cero o más parámetros Pueden retornar un valor o pueden ser declarados void para indicar que no retornan ningún valor Pueden ser de instancia o static: Un método de instancia se invoca sobre un objeto de la clase, al cual tiene acceso mediante la palabra this (y sus variables de instancia son accesibles de manera directa) Un método static no opera sobre un objeto de la clase, y la palabra this no es válida en su interior Sintaxis [static] <tipo retorno> <nombre método> (<tipo> parámetro1, ...) { // cuerpo del método return <valor de retorno>; } 9

Métodos class Circulo { // campos double radio = 5; String color; Método de instancia, tiene acceso directo a las variables de instancia del objeto sobre el que se invoca class Circulo { // campos double radio = 5; String color; static int numeroCirculos = 0; static final double PI = 3.1416; // métodos double getCircunferencia() { return getCircunferencia(radio); } static double getCircunferencia(double r) { return 2 * r * PI; // constructores // main( ) Método static, no tiene acceso directo a variables de instancia

Sobrecarga (Overload) de Métodos Métodos de una clase pueden tener el mismo nombre pero diferentes parámetros Cuando se invoca un método, el compilador compara el número y tipo de los parámetros y determina qué método debe invocar Firma (signature) = nombre del método + lista de parámetros Ejemplo: class Cuenta { public void depositar(double monto) { this.depositar(monto, "$"); } public void depositar(double monto, String moneda) { // procesa el depósito

Curso de Java Visión Global Acceso a Métodos Acceso a campos y métodos de instancia: se utiliza la sintaxis "objeto." Circulo c1 = new Circulo(); c1.radio = 5; c1.color = "rojo"; double d = c1.getCircunferencia(); // Si c1 es null, // se genera una excepción NullPointerException; Acceso a campos y métodos static: se utiliza la sintaxis "clase." Circulo.numeroCirculos++; int n = Circulo.getNumeroCirculos(); System.out.println(Circulo.PI); 12

Encapsulamiento Gady Booch define al encapsulamiento “the process of compartmentalizing the elements of an abstraction that constitute its structure and behavior; encapsulation serves to separate the contractual interface of an abstraction and its implementation” La clase es el espacio donde se empaquetan atributos y métodos

Modificadores de Acceso Curso de Java Visión Global Modificadores de Acceso Nivel de acceso para miembros de clases (campos, métodos, y clases anidadas) Public: miembro es accesible en cualquier lugar en que la clase sea accesible Protected: miembro es accesible por subclases y clases del mismo package Package (default): miembro es accesible por clases del mismo package Private: miembro es accesible sólo al interior de la clase Nivel de acceso para clases e interfaces Public: clase/interfaz es accesible globalmente Package (default): clase/interfaz es accesible por clases del mismo package 14

Modificadores de Acceso class Circulo { // campos private double radio = 5; private String color; private static int numeroCirculos = 0; public static final double PI = 3.1416; // métodos // constructores // main( ) } Recomendación: los campos siempre deben ser privados (a menos que sean constantes)

Propiedades En Java, las propiedades se definen por la existencia de métodos getter y setter: class Circulo { void setRadio(double radio) { ... } double getRadio() { ... } double getCircunferencia() { ... } } Las propiedades pueden basarse en el uso de campos o no: la clase Circulo puede tener un campo radio, pero probablemente no tenga un campo circunferencia Las propiedades de una clase pueden ser determinadas en ejecución mediante reflection (lo que es utilizado por frameworks como JSP, JSF, JPA) Propiedad radio (read-write) Propiedad circunferencia (read-only)

Instanciación y Referencias Los objetos se crean con el operador new, y se manejan mediante referencias Los objetos se crean en el área de memoria dinámica conocida como el heap Una referencia contiene la dirección de un objeto (es similar a los punteros de otros lenguajes) Una asignación entre objetos es una asignación de referencias Circulo c1 = new Circulo(); Circulo c2 = c1; Memoria Stack Heap c1 c2

Paso de Parámetros En Java el paso de parámetros se realiza "por valor" Argumentos de tipos primitivos Si un método modifica el valor de un parámetro, este cambio sólo ocurre al interior del método; al retornar el método, se mantiene el valor original Argumentos de tipo referencia (objetos) Al retornar el método, la referencia pasada como parámetro sigue referenciando al mismo objeto; sin embargo, los campos del objeto podrían haber sido modificados por el método

Constructores Un constructor es un método especial invocado para instanciar e inicializar un objeto de una clase Invocado con la sentencia new Tiene el mismo nombre que la clase Puede tener cero o más parámetros No tiene tipo de retorno, ni siquiera void Un constructor no público restringe el acceso a la creación de objetos Si la clase no tiene ningún constructor, el sistema provee un constructor default, sin parámetros Si la clase tiene algún constructor, debe usarse alguno de los constructores definidos al instanciar la clase (el sistema no provee un constructor default en este caso)

Ejemplo class Circulo { ... // constructores public Circulo() { Curso de Java Visión Global Ejemplo class Circulo { ... // constructores public Circulo() { radio = 1; } public Circulo(double r) { radio = r; void f() { Circulo c = new Circulo(30); 20

Invocación entre Constructores La palabra this puede ser utilizada en la primera línea de un constructor para invocar a otro constructor class Circulo { private double radio; private static int numeroCirculos = 0; Circulo(double radio) { this.radio = radio; Circulo.numeroCirculos++; } Circulo() { this(10); // radio default: 10

Resumen Una clase es una plantilla a partir de la cual se instancian objetos Los objetos contienen información (en campos de instancia y static) y comportamiento (en métodos de instancia y static) Los miembros de instancia se utilizan con la sintaxis "objeto." Los miembros static se utilizan con la sintaxis "clase." Una clase puede tener varios métodos con el mismo nombre (sobrecarga), siempre que tengan diferentes parámetros

Resumen Para instanciar una clase (crear un objeto) se utiliza el operador new Los constructores son métodos especiales invocados al instanciar una clase Los objetos se manejan a través de referencias La palabra this representa una referencia al objeto sobre el cual se invoca un método de instancia Los modificadores de acceso controlan quién tiene acceso a los miembros de una clase