¿Por qué orientación al objeto ?

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Curso de java básico (scjp)
Definición de Clases y Variables de referencia.
Tema 1. Introducción a la programación (Lenguaje java).
Programación Orientada a Objetos en Java
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Abstracción de los datos y Orientación a Objeto Clase 13.
Técnicas avanzadas de programación Interfaces
Programación orientada a objetos
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Qué es Orientación a Objeto ? Los datos que usan los programas son objetos Los objetos son una colección de variables y métodos para manipularlas Métodos.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos Capítulo 3 Interacción de objetos.
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.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
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 SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Clases y Objetos en Java
Unidad Didáctica 11 Reutilización Versión 1.0.0
Clases y Objetos.
Taller de Java Universidad de los Andes
Convenciones de nomenclatura y diseño
Programación Avanzada
Herencia Implementación en Java.
Programación Orientada a Objetos
Fundamentos de la programación orientada a objetos
Manejo de Punteros y objetos en memoria dinámica en C++
Clases y Objetos en Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Programación orientada a objetos
Sonia Rueda Herencia y Polimorfismo
Manejo de Punteros y objetos en memoria dinámica en C++
Clases y Objetos en Java
Polimorfismo y Métodos Virtuales
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia en C#.
Manejo de Punteros y objetos en memoria dinámica en C++
ESTRUCTURA DE UN PROGRAMA SIMPLE EN JAVA
Plantillas (Templates)‏
Ingeniero en Computación José Alfredo Cobián Campos
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
Manejo de Punteros y objetos en memoria dinámica en C++
Características Generales y Entornos de Desarrollo
Herencia en C++ Agustín J. González ELO329.
Tópicos Avanzados de Programación (TAP3501)
Manejo de Punteros y objetos en memoria dinámica en C++
Intruccion a la plataforma Java
Algunas Características de C++ no presentes en C
Manejo de Punteros y objetos en memoria dinámica en C++
Manejo de Punteros y objetos en memoria dinámica en C++
Objetos con linea de ejecucion propia
Manejo de Punteros y objetos en memoria dinámica en C++
Herencia en C++ Agustín J. González ELO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Asignación Dinámica de Memoria
Prof. Marcos Heredia.  Primitivos y No Primitivos.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Podemos pensar en otros objetos no existentes: el reloj
Templates (en español: Pantillas, modelos, patrones)‏
Tema 5 H erencia. La herencia es una forma de reutilización de software en la que las clases se crean incorporando los datos (atributos) y el comportamiento.
Clases abstractas e interfaces
Clases y Objetos en Java
Transcripción de la presentación:

¿Por qué orientación al objeto ? Una estrategia para poder desarrollar programas más grandes, más libres de errores y en menos tiempo: Software engineering

Podemos pensar en otros objetos no existentes: tiempo Las variables son las posiciones de los punteros: segundero, minutero y horario Los métodos son para poner los valores y preguntar “¿qué hora es?” Establecer valores de los punteros Preguntar la hora

Clases y objetos Todo objeto es de una cierta clase La clase define el tipo de objeto, esto es: Qué variables contiene Qué métodos pueden ser aplicados a un objeto de esta clase Objecto A de clase clock Objecto B de clase clock Clase Clock Objecto C de clase clock

Diseño de los métodos (1) Clock A = new Clock( ); Clock A; A = new Clock(); A.setTime(15,35,45); int i = A.getHour( ); String s = A.getTime() Crea un nuevo objeto Clock Pone los valores en 15, 35 y 45 recupera el valor del puntero horario recupera un String con hh:mm:ss

Escribamos el archivo Clock Escribamos el archivo Clock.java, compilémolos y usémolos en un programa Clock A = new Clock( ); A.setTime(15,30,20); int h = A.getHour( ); int m = A.getMinutes(); int s = A.getMinutes(); String s = getTime(); hours minutes seconds 15 30 20 Por convención, los nombres de variables y metodos empiezan minúscuas Clock.java ProgramClock1

Cómo se define una clase nueva Definir una nueva clase básicamente significa Definición de las variables que contendrá un objeto Definición de los métodos que se le podrán aplicar a un objeto de esta clase La definición de una clase debe ir en un archivo llamado Classname.java Por convención, el nombre de las clases debe empezar con mayúscula Console String Clock Student Después de compilar el archivo con la clase podemos usarla al igual que hemos usado la clase Consola

El registro de un estudiante Las variables son los datos relevantes del estudiante (nombre, edad, dirección, etc..) Los métodos son para establecer valores y recuperar estos datos Poner valores Name: Sakano Tepe Address: Musashino-shi. Year Born: 1977 Recuperar valores

El registro de un estudiante Las variables: name, address, yearBorn Los métodos setX(parámetro), getX(), Con X = Name, Address, Year Set data Name: Sakano Tepe Address: Musashino-shi. Year Born: 1977 retrieve data Student.java Program9

Dado un nombre preguntar el teléfono El libro telefónico Las variables son listas de números y nombres Los métodos son para registrar un nuevo par (nombre,número), preguntar el teléfono dado un nombre, cambiar un teléfono o borrar un par Poner nuevo par (nombre, número) Cambiar el número dado un nombre Borrar un par (nombre, número) Dado un nombre preguntar el teléfono

Diseño de los métodos (2) Phonebook B = new Phonebook( ); B.addEntry(“Simón Vera”,422596160); long l = B.getNumber(“Simón Vera” ); Crea un libro de teléfonos vacío Dados nombre y número como parámetros crea un entry Simón Vera 422596160 Simón Vera Dado un nombre como parámetro recupera el número 422596160

Como usar clases definidas por el usuario La manera más simple es usar el archivo class en el mismo dirctorio donde se encuantra el programa que usa la clase (también se pueden usar paquetes o definir la variable CLASSPATH Java MyClass MyClass AnotherClass main(... new AnotherClass()

The Phone Book Name Number Matsumoto 11122233 Vera 3456789 Wakahara 2345678 ..... .... Set(name,number) Retrieve(name)

The Phone Book: Implementation 1 int[] numbers String[] names 1 2 3 4 5 6 Jun Kenichiro Kamugisha 45678 12345 55443 int next Maximum ProgramPhonebook Phonebook

El Phone Book: Implementation 2 (Un vector de Objetos) Vector entries Jun 123456 Sakano 223344 Juinichi 889997 Cada elemento del vector es un objeto de la clase Entry Un Objeto de la clase Entry tiene un String (name) y un int (para el numero)

El Objeto Vector Está definido en el paquete java.util, por lo cual hay que importarlo Se pueden guardar objetos de cualquier clase Sólo ocupa el espacio que necesita para los objetos que realmente tiene Los objetos tienen una posición y se pueden “rescatar” Los métodos más importantes son: add(objeto) agrega el objeto al final add(i,objeto) agrega el objeto en la posición dada elementAt(i) retorna un puntero al elemento en la posicion removeElementAt(i) elimina el elemento en la posición dada clear() elimina todos los elementos Phonebook2

La clase Hashtable Esta definida en el package java.util, Acepta pares de objetos de cualquier clase El primero es usado como indice, el segundo como informacion Los metodos mas importantes son: put(objet1, objet2) adds a pair of objects (object1 is the index, object2 the information get(objeto1) returns the object for which object1 is the index remove(objet1) deletes the object for which object 1 is index Hash

Otra class: el Vektor (o Punto) Crear un Vektor Retornar em módulo de un Vektor Retornar parte-x o parte-y Sumar 2 Vektores Restar 2 Vektores y x ProgramVektor.java Vektor.java

La variable “this” en la definición de la clase public class MyClass { var a1, a2, a3; method1() { this this.a, this.b, this.c } public static void main(....) { MyClass mc = new MyClass() mc.method1(); }

La variable a un object es un puntero Console c, b; Tenemos dos punteros apuntando a nada todavía. Tienen el valor null y causará Invocar un método sobre esta variable c = new Console(); b = c; Ahora tenemos dos variables apuntando Al mismo objeto objecto. Si invocamos Cualquier método sobre cualquiera de las Variables, ambas notarán el cambio c b

Resumamos: Escritura de clases Esto implica que esta clase será conocida fuera del archivo también. Nombre de clases empiezan Por convención con mayúsculas public class Classname { declaration of variables write contructor method(s) write other methods } Se pueden definir más clases en un mismo archivo pero una de ellas Puede ser pública solamente ! (y es la que le da el nombre al archivo)

Cómo escribir métodos dinámicos Type of value the method will return (void in case it does not return any value) Name of the method (given by the programmer) public int getHours( ) { return hours; } Public, private, protected or static Parameters of the method (none in this case) The instructions should be written within the brackets {}

Escritura de constructores Nombre del método es El de la clase Parámetros que recibirá el Constructor para crear el nuevo Objeto (inicialización) Clock2 ( int h, int m, int s, int D, int M ) { . . . } No se necesita escribir nada aqui Se puede escribir más de un constructor Clock2 ( ) { . . . } Este constructor pondrá valores default en el objeto

Extendiendo un clase: Herencia Una de las características más poderosas que tiene la orientación a objeto es la posibilidad de extender una clase, incluso si la implemnetación de esta no se conoce Original Class Class1 Super-clase de la clase extendida Un objeto de Clase Class2 es También de Clase Class1 Original Class Class2 Extended Class Definición de nuevas variables y métodos

Extendamos la clase Clock Vamos a ponerle más información a un objeto de clase Clok Le pondremos las variables day y month y los métodos Para manejarlas. public class Clock2 extends Clock { declare otras variables (day y month) declare otros metodos } Clock2.java dos

La clase Object Existe una clase minimal llamada “Object” Todas las clases en java son extensiones de ella Incluso si no se escribe explícitamente, las clases definidas por el usuario también son extensiones de ella Esto implica que cualquier objeto en un programa java será de la clase Object Object Clock String Console Clock2 Others Console2

Extendiendo la clase Student Vamos a incorporar las notas Como cada alumno puede recibir un n úmero variable de notas, vamos a usar un arreglo de largo variable Vectores no son parte del core del lenguaje java, por lo que hay que importar el paquete java.utility The instruction for doing this is import java.util.Vector; or import java.util.*; Some of the methods of this class are void add(Object) Object elementAt() int size() WasedaStudent Program10

Public, private, protected Los métodos y las variables en una clase se pueden clasificar como public, private, y protected Un método o variable public puede ser accesada desde cualquier programa que tenga acceso a la clase. Esto significa que en el caso de lariable declaradas public, un programa externo puede modificar el valor de estas variables public class Student { public String name; public String address; public int yearBorn; ...... Student s1 = new Student(); s1.name = “Nelson Baloian”;

Private & protected Un método o variable clasificada como private puede ser usada sólo por métodos escritos dentro de la clase. Una variable o método protected puede ser accesada desde desntro de la clase y desde una clase extendida Cuando no hay ningún clasificador significa que el método o variable son accesibles desde dentro del paquete (package, serán vistos más adelante con detalle)

Private, protected, public Public: conocido por cialquiera que conozca la clase Protected: conocido también por la extendida Private: sólo conocido por la clase

Variables Estáticas (static) Una variable declarada como static significa que habrá una sola para toda la clase (contrariamente a las dinámicas, de las cuales tiene cada objeto una copia) Ejemplo: queremos llevar la cuanta de cuántos estudiantes han sido creados public class WasedaStudent2 extends WasedaStudent { public static int nstudents = 0; WasedaStudent2(String x, String y, int z, int n) { super(x,y,z); marks = new int[n]; nmarks = 0; nstudents = nstudents +1; }

Polimorfismo Muchas veces es necesario que un Objeto de una cierta clase sea considerado como también perteneciente a otra al mismo tiempo Un objeto puede verse como perteneciente a la clase final definida para él y además como perteneciente a todas las superclases de la jerarquía hasta Object Este es el primer mecanismo de polimorfismo Pero las clases en Java solo pueden extender una superclase. Muchas veces sucede que objetos de clases que ya han extendido una clase puedan ser vistos como pertenecientes a otra clase también Esto puede lograrse usando interfaces Veamos ejemplos de ambos casos

Ejemplo con Herencia Object GraphicObject RectangleObject CircleObject GraphicTest.java

Métodos para dibujar en la consola x1,y1 x2,y2 drawLine(x1,y1,x2,y2) drawRect(x,y,w,h) fillRect(x,y,w,h) drawOval(x,y,w,h) fillOval(x,y,w,h) w x,y h w x,y h

Métodos para dibujar en la Consola x[0],y[0] drawPolygon(x[],y[],n) fillPolygon(x[],y[],n) setColor(color.colorname) colorname = black, blue, cyan, darkGray, gray, orange, white, red, pink, yellow setColor(new color(red,green,blue)) x[1],y[1] x[4],y[4] x[2],y[2] n = 5 x[3],y[3]

Dibujando Strings y cambiando el tamaño y el Font drawString(str, x,y) We can change the standard Font by creating a new one Font afont = new font(“Arial”,font.Bold,20) c.setFont(afont); x This is the string y Estos métodos son los mismos que usa Java para dibujar componentes nativas (JFrame, Jcanvas, etc...)

Interfaces Vektor Clock VisualVektor VisualClock VisualVektor INTERFACE: GraphicObjectInterface GraphicTestInterface.java