Programación Orientada a Objetos en JAVA



Documentos relacionados
Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Modulo 1 El lenguaje Java

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Introducción a la Programación Orientada a Objetos

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Clases y Objetos. Informática II Ingeniería Electrónica

Capítulo 6. Introducción a la POO

Programa Presupuestos de Sevillana de Informática.

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Universidad de Cantabria

Programación Orientada a Objetos en Java

15. Parámetros o argumentos

8. Sentencia return y métodos

11. Algunas clases estándar de Java (II)

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Pruebas de unidad con JUnit

Ejercicio 1 (3 puntos).-

Programación Orientada a Objetos con Java

Programación I: Funciones y módulos

9. Objetos y clases Clases

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Introducción a la programación orientada a objetos

2.1. Introducción al lenguaje Java

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Programación orientada a objetos

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Crear usuario en XP. Redes Paso a Paso. Introducción Explicación Paso 1 Paso 2 Paso 3 Paso 4 Paso 5 Paso 6 Paso 7 Paso 8 Paso 9 Paso 10. Descripción.

Tema: Arreglos de Objetos en C++.

Lección 24: Lenguaje algebraico y sustituciones

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación

Ayuda para el usuario de Websense Secure Messaging

10. Algunas clases estándar de Java (I)

Programación Orientada a Objetos en Java

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Objetivo de aprendizaje del tema

Es una persona que ayudará a que los derechos de las personas con discapacidad se hagan realidad

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Java Inicial (20 horas)

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Tutorial Servicios Web

POLIMORFISMO "una interfaz, múltiples métodos".

Indicadores conceptos base EA constitución base Introducción a la programación de MT METATRADER, CONCEPTOS BÁSICOS DE PROGRAMACIÓN I

Curso de Java POO: Programación orientada a objetos

Estructura de datos tipo vector.

2.2.- Paradigmas de la POO

PROGRAMACIÓN ORIENTADA A OBJETOS

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

PART II: Moviendo al jugador

Gestión de usuarios en la web educativa del centro con JOOMLA!

Trabajo Práctico N 4: Diseño por Contratos

Tema: Clases y Objetos en C++.

2. Estructura de un programa en Java

Índice ÍNDICE EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.) EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Capitulo VII. Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito

TEMA 3. CLASES. EJERCICIOS

Informática I Notas del curso

FACULTAD DE INGENIERÍA

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

Técnicas Avanzadas de Testing Automatizado

Figura 4.1 Clasificación de los lenguajes de bases de datos

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

Primer Parcial Septiembre 5 de 2009

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Curso 0 de Informática

Modularización Relación de ejercicios

Unidad: Representación gráfica del movimiento

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

MANUAL DE NAVEGACIÓN DEL SIIA-WEB versión PRONAD

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 02: Datos Adicionales de configuración [1]

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

FACULTAD DE INGENIERÍA

Prof. Dr. Paul Bustamante

SISTEMA DE BECAS AL EXTERIOR

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Curso de Python Inicial

Notación UML para modelado Orientado a Objetos

Los estados financieros proporcionan a sus usuarios información útil para la toma de decisiones

GUÍA PARA LA FORMULACIÓN PROYECTOS

Conceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases

Primer Parcial Febrero 24 de 2007

Benemérita Universidad Autónoma del Estado de Puebla

Operaciones con polinomios

SGIC. Propuesta para Plan de Telefonía y Perfiles de Consumo

Creación de Funciones de Conducción

Guías técnicas Grupo Danysoft: Aplicaciones Web seguras con ASP.NET

Para obtener una cuenta de padre

DESCARGA E INSTALACIÓN DE LA DOCUMENTACIÓN PARA LAS CLASES DEL API DE JAVA. CONSULTAR EN LOCAL O EN INTERNET? (CU00910C)

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Que es Velneo vdataclient V7?

SMS PUSH SMS ENCUESTAS INTERNET FAX

Tema: Sobrecarga de Operadores.

Transcripción:

Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36

Orientación a Objetos OO es un paradigma de modelación y programación Idea principal: modelar los problemas lo mas cercanos al contexto en el que ocurren y Hacer un programa siguiendo esta modelación. Conceptos fundamentales (iniciales): Clases Objetos Jorge Pérez Programación Orientada a Objetos en JAVA 2 / 36

Clases y Objetos Lo más simple es verlo con ejemplos: Clase: Persona Objetos: Juan, Alberto, Julia Clase: Perro Objetos: Boby, Lazy, Benji Clase: Pais Objetos: Chile, Australia, Afganistan Jorge Pérez Programación Orientada a Objetos en JAVA 3 / 36

Clases y Objetos Lo más simple es verlo con ejemplos: Clase: Curso Objetos: ING1310, ING2210 Clase: Alumno Objetos: Pedro, Oscar, Carolina, Diego Clase: Universidad Objetos: UAndes, PUC, UTalca Jorge Pérez Programación Orientada a Objetos en JAVA 4 / 36

Clases y Objetos Lo más simple es verlo con ejemplos: Clase: Número Complejo Objetos: (3 + 5i), ( 5 7i), 0, i Clase: Polinomio Objetos: 2x + 7, 3x 2 5, 0, x 100 Jorge Pérez Programación Orientada a Objetos en JAVA 5 / 36

Clases y Objetos Clase: Computador Objetos:... Clase: Automóvil Objetos:... Clase: Figura Geométrica Objetos:... Clase: Animal Objetos:... Jorge Pérez Programación Orientada a Objetos en JAVA 6 / 36

Clases y propiedades (atributos) Un objeto que pertenece a una clase se llama instancia de esa clase. Si un objeto A es una instancia de la clase C diremos que A es de tipo C. Todos los objetos (o instancias) de una misma clase compaten ciertos atributos. Clase: Persona Atributos: nombre, sexo, fecha de nacimiento, estatura... Clase: Perro Atributos: raza, color de pelo, sexo,... Clase: Pais Atributos: nombre, área, número de habitantes,... Jorge Pérez Programación Orientada a Objetos en JAVA 7 / 36

Objetos y atributos Distintos objetos (de una misma clase) pueden tener distintos valores en estos atributos: Clase: Persona Objeto: Ivan Zamorano (el ex-futbolista) Atributos: nombre: Ivan Zamorano sexo: masculino estatura: 1,80 metros... Clase: Perro Objeto: Cachupin (el perro de mi vecino) Atributos: raza: no definida color de pelo: negro con café sexo: macho... Jorge Pérez Programación Orientada a Objetos en JAVA 8 / 36

Objetos y atributos Dos objetos de una misma clase pueden tener exactamente los mismos valores para todos sus atributos pero ser objetos distintos Por ejemplo pueden existir dos personas distintas que se llamen Ivan Zamorano, de sexo masculino, que midan 1,80 mts,... Los valores de los atributos NO definen la identidad de un objeto (recuerden lo que pasaba con los strings en JAVA...) Los valores de los atributos definen el estado del objeto Jorge Pérez Programación Orientada a Objetos en JAVA 9 / 36

Ejercicios: Atributos, Objetos? Clase: Curso Clase: Alumno Clase: Universidad Clase: Computador Clase: Automóvil Clase: Figura Geométrica Clase: Animal Jorge Pérez Programación Orientada a Objetos en JAVA 10 / 36

Objetos, atributos, clases... Un objeto puede tener otros objetos como (valores de) atributos Por ejemplo, un objeto de tipo Alumno podria tener como atributos un conjunto de objetos de tipo Curso Tengo varios objetos de tipo Curso: ING1310, ING1130, ING1110, ING1150, ING1140 Un objeto A de tipo Alumno podria tener a ING1310, ING1130, ING1150 como cursos Un objeto B de tipo Alumno podria tener a ING1150, ING1140 como cursos En este caso decimos que la clase Alumno tiene un conjunto de Cursos como parte de sus atributos. Ejercicio: piense en ejemplos de objetos que tienen otros objetos como atributos. Jorge Pérez Programación Orientada a Objetos en JAVA 11 / 36

Operaciones, métodos sobre objetos Se pueden realizar operaciones o métodos sobre objetos (instancias) de una clase, para modificar su estado. Por ejemplo: Cambiarle el nombre a una persona Asignar un nuevo curso a un alumno Eliminar a un alumno un curso que tenia asignado Estos métodos son intrinsecos a la Clase, o sea, pueden ser aplicadas a cualquier objeto de la clase. Note que estos métodos deben recibir parámteros (el nuevo nombre, el nuevo curso, el curso a eliminar) Jorge Pérez Programación Orientada a Objetos en JAVA 12 / 36

Operaciones, métodos sobre objetos Existen otros métodos que nos permiten consultar por el estado de un objeto o por cierta información que puede ser deribada de los atributos... Por ejemplo: Cuál es el nombre de una persona Cuál es la edad de una persona Tiene un alumno algún curso asignado Cuántos cursos tiene asignado un alumno Cuántos créditos en total tiene un alumno Estas operaciones son intrinsecas a la Clase, o sea, pueden ser aplicadas a cualquier objeto de la clase. Note que estos métodos entregan resultados. Jorge Pérez Programación Orientada a Objetos en JAVA 13 / 36

Clases, atributos, operaciones En general para definir (modelar) una clase se debe especificar los atributos que tendrán los objetos de esa clase las operaciones que se pueden realizar sobre los objetos de la clase (consultas, modificaciones de estado) Tanto los atributos como las operaciones sobre los objetos que definamos, dependerán de la realidad que queremos modelar. Jorge Pérez Programación Orientada a Objetos en JAVA 14 / 36

Ejemplo: Super 8 Queremos modelar a un vendedor de Super 8 Clase: Vendedor de Super 8 Atributos: cantidad de Super 8 precio de cada Super 8 monto actual Métodos: le quedan Super 8 cuantos Super 8 le quedan cuanto cuesta un Super 8 comprarle un Super 8 comprar varios Super 8 Qué métodos reciben parámetros? Cómo afecta a una instancia de la clase Vendedor de Super 8 la aplicación de estos métodos? Haga ejemplos para distintas instancias Jorge Pérez Programación Orientada a Objetos en JAVA 15 / 36

Ejercicio Modele al Vendedor de Super 8 pero suponiendo que debe lidiar con el vuelto para cada compra Qué atributos debe tener? Qué parámetros deben recibir los métodos para comprar Super 8? Cómo afecta al estado de un objeto la aplicación de estos métodos? Jorge Pérez Programación Orientada a Objetos en JAVA 16 / 36

Construyendo una instancia Hemos visto que el estado de una instncia está dado por los valores de sus atributos. Que las operaciones sobre los objetos nos permiten consultar por o modificar el estado de una instancia. Pero cuál es el estado inicial? En el ejemplo del vendedor de Super 8, si queremos modelar la venta diaria podriamos pensar que: la cantidad inicial de Super 8, y el precio de cada Super 8 lo decide el vendedor (la instancia) al salir de su casa en la mañana. el monto de dinero inicial es 0. luego durante el día se interactúa con la instancia del vendedor y su estado evoluciona. La idea de asociar un estado inicial a una instancia se conoce técnicamente como construir una instancia. Un constructor es un método que asigna un estado inicial a una instancia de una clase (debe recibir los parámteros necesarios). Jorge Pérez Programación Orientada a Objetos en JAVA 17 / 36

Clases en JAVA class NombreClase Atributos de la clase... Metodo Constructor de la clase Metodos de la clase... En JAVA todas las clases comienzan su definicion con la palabra reservada class seguido del nombre de la clase Le siguen los atributos de la clase (que tendran valores para las distintas instancias) El constructor (o constructores) Los métodos de la clase. Jorge Pérez Programación Orientada a Objetos en JAVA 18 / 36

Atributos de Clases en JAVA Los atributos de una clase en JAVA se definene igual que declaraciones de variables. Por ejemplo para la case Pais podriamos tener los atributos: class Pais string nombre; double area; int cantidadhabitantes;... Para el Vendedor de Super 8: class VendedorSuper8 int preciosuper8; int cantidadsuper8; int monto;... Jorge Pérez Programación Orientada a Objetos en JAVA 19 / 36

Métodos de Clases en JAVA Los métodos de las clases tienen una sintaxis similar a los métodos que hemos estado utilizando, salvo que no usaran la palabra static. En general un método dentro una clase se verá como public valor_retorno nombre_metodo(...parametros...) codigo del metodo... Dentro de los métodos se puede alterar el estado modificando los valores de los atributos. Tambien se puede consultar por el estado accediendo a los valores de los atrbutos. MUY IMPORTANTE: el nombre del método constructor debe ser el mismo nombre del la clase y NO se debe especificar valor de retorno para el constructor. Jorge Pérez Programación Orientada a Objetos en JAVA 20 / 36

Métodos de Clases en JAVA Para el ejemplo del vendedor de Super 8 tenemos class VendedorSuper8 int preciosuper8; int cantidadsuper8; int monto; public VendedorSuper8(int p, int c) preciosuper8 = p; cantidadsuper8 = c; monto = 0;... otros metodos... incluyendo el constructor de las instancias. Dependiendo de los valores que sean entregados al constuctor se crearan distintas instancias. Jorge Pérez Programación Orientada a Objetos en JAVA 21 / 36

Métodos de Clases en JAVA Para el ejemplo del vendedor de Super 8 podemos agregar un método que responde si le quedan o no Super8 (retorna un boolean) class VendedorSuper8 int preciosuper8; int cantidadsuper8; int monto; public VendedorSuper8(int p, int c) preciosuper8 = p; cantidadsuper8 = c; monto = 0; public boolean lequedansuper8() if (cantidadsuper8 > 0) return true; else return false;... otros metodos... Jorge Pérez Programación Orientada a Objetos en JAVA 22 / 36

Métodos de Clases en JAVA Para el ejemplo del vendedor de Super 8 ahora agregamos el metodo para comprar un Super 8, note como se altera el estado. class VendedorSuper8 int preciosuper8; int cantidadsuper8; int monto;... public void comprasuper8() if(cantidadsuper8 > 0) cantidadsuper8--; monto = monto + preciosper8;... otros metodos... complete la definicion agregando un método que permita obtener cual es el monto actual del vendedor. Jorge Pérez Programación Orientada a Objetos en JAVA 23 / 36

Interactuando con instancias desde el método principal. Hemos visto como definir modelar una clase Veremos ahora como interactuar con objetos de estas clases La idea será usar inicialmente el método principal main para crear objetos y utilizar sus métodos y atributos. Veremos como se hace en JAVA para crear y utilizar objetos. Jorge Pérez Programación Orientada a Objetos en JAVA 24 / 36

Creando una instancia Los objetos se utilizan usando variables de JAVA, al igual que otros tipos de datos. Clase obj; Esto crea una variable obj que será una referencia a un objeto de la clase Clase, por ejemplo VendedorSuper8 Juan; Para crear objetos se usa new y un llamado al constructor de la clase en particular new Clase(...); Esto crea un objeto usando el constructor de la clase Clase, por ejemplo new VendedorSuper8(100, 5); crea un objeto de la clase VendedorSuper8 con 5 Super 8 y un precio de 100. Jorge Pérez Programación Orientada a Objetos en JAVA 25 / 36

Creando una instancia y llamando a métodos Para crear un objeto y asigarselo a una variable hacemos Clase obj = new Clase(...); Por ejemplo VendedorSuper8 Juan = new VendedorSuper8(100, 5); crea un objeto de la clase VendedorSuper8 usando el constructor, y se lo asigna a la variable Juan. Jorge Pérez Programación Orientada a Objetos en JAVA 26 / 36

Atributos y métodos Cuando tenemos creado un objeto podemos referirnos a sus atributos y llamar a sus métodos de la siguiente forma: obj.atributo; obj.metodo(...); obj.atributo se puede usar como una variable cualquiera, para asignar un valor o dentro de una expresion obj.metodo(...) se usa igual que cualquier llamado a método, se puede utilizar su resultado para realizar tareas Por ejemplo podemos hacer Juan.cantidadSuper8 = 10; Juan.cantidadSuper8 = Juan.cantidadSuper8 * 2; para manipular el atributo cantidadsuper8 del objeto Juan. Jorge Pérez Programación Orientada a Objetos en JAVA 27 / 36

Atributos y métodos VendedorSuper8 Juan = new VendedorSuper8(100, 5); while( Juan.leQuedanSuper8() ) System.out.println("Aun quedan Super 8, se puede comprar otro..."); Juan.comprarSuper8(); Jorge Pérez Programación Orientada a Objetos en JAVA 28 / 36

Ejemplo: numeros complejos Considere una clase para manejar números complejos class Complejo double re; double im; public Complejo(double r, double i) re = r; im = i; public double Norma() double norma = Math.sqrt( re * re + im * im ); return norma; public void Conjuga() im = - im; Jorge Pérez Programación Orientada a Objetos en JAVA 29 / 36

Ejemplo: numeros complejos En una clase podemos tener varios constructores que reciban distintos parámetros, por ejemplo en la clase complejo podriamos tener class Complejo double re; double im; public Complejo(double r, double i) re = r; im = i; public Complejo(double r) re = r; im = 0; public Complejo() re = 0; im = 0;... El constructor usado dependera de como se llame. Jorge Pérez Programación Orientada a Objetos en JAVA 30 / 36

Ejemplo: numeros complejos Complejo c1 = new Complejo(3,4); Complejo c2 = new Complejo(1, 3.5); Complejo c3 = new Complejo(0.5); Complejo c4 = new Complejo(); System.out.println(c1.Norma()); c1.conjuga(); System.out.println(c1.Norma()); System.out.println(c2.re + " + " c2.im + "i"); System.out.println(c3.re + " + " c3.im + "i"); System.out.println(c4.re + " + " c4.im + "i"); Jorge Pérez Programación Orientada a Objetos en JAVA 31 / 36

Numeros complejos: ejemplos Escriba métodos para la clase complejos public boolean equals(complejo c) que retorna true si c es un complejo del mismo valor de la instancia que llama al método. public Complejo Copy() que retorna una copia (nuevo objeto) del complejo que hace la llamada. public Complejo GeneraConjugado() que retorne el número complejo conjugado de la instancia que se llama. public void Suma(Complejo c) que le suma el complejo c a la instancia. Cuidado, en cada método se usa/necesita un complejo diferente del que hace la llamada al método. Jorge Pérez Programación Orientada a Objetos en JAVA 32 / 36

Complejo: equals class Complejo double re; double im;... public boolean equals(complejo c) if( re == c.re && im = c.im ) return true; else return false;... Jorge Pérez Programación Orientada a Objetos en JAVA 33 / 36

Complejo: equals public static main(string[] args) Complejo c1 = new Complejo(10, -7); Complejo c2 = new Complejo(10, -7); if ( c1 == c2 ) System.out.println("Son el mismo objeto" ); if ( c1.equals(c2) ) System.out.println("Los complejos tienen el mismo valor"); if ( c1.equals(c1) ) System.out.println("Los complejos tienen el mismo valor"); Jorge Pérez Programación Orientada a Objetos en JAVA 34 / 36

Complejo: Copy, GeneraConjugado class Complejo double re; double im;... public Complejo Copy() Complejo c = new Complejo(re, im); return c; public Complejo GeneraConjugado() Complejo c = new Complejo(re, im); c.conjuga(); return c;... Jorge Pérez Programación Orientada a Objetos en JAVA 35 / 36

Complejo: Copy, GeneraConjugado public static main(string[] args) Complejo c1 = new Complejo(10, -7); Complejo c2 = c1.copy(); Complejo c3 = c2.generaconjugado(); if ( c1 == c2 ) System.out.println("Son el mismo objeto"); if ( c2.equals(c3) ) System.out.println("Los complejos tienen el mismo valor"); c2.conjuga(); if ( c2.equals(c3) ) System.out.println("Los complejos tienen el mismo valor"); Jorge Pérez Programación Orientada a Objetos en JAVA 36 / 36