Qué es Orientación a Objeto ? Los datos que usan los programas son objetos Los objetos son una...

28
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 que modifican variables Método que retorna valores dependiendo del estado de las variables

Transcript of Qué es Orientación a Objeto ? Los datos que usan los programas son objetos Los objetos son una...

Page 1: 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.

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 que modifican variables

Método que retorna valores dependiendo del estado de las variables

Page 2: 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.

Ejemplos de “Objetos” • Un reloj: las variables representan dónde

están los punteros

• A telephone book: the variables are a list of names and telephone numbers

Poner la hora

¿Qué hora es?

• Set a name with a telephone number• change the telephone number• delete a pair name-telephone

• Given a name ask the telephone number

Page 3: 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 • Todo objeto es de una clase dada

• La clase define el tipo de objeto– variables que contiene un objeto de esta clase– qué métodos se pueden aplicar a un objeto de esta clase

Clase Clock

Objeto A de clase Clock

Objeto B de clase Clock

Objeto B de clase Clock

Page 4: 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.

Ejemplo de uso de Objetos• Clock A = new Clock( );

• A.setNewTime(3,35);

• int i;

• i = A.getHour( );

Put pointers in 3 and 35

Get the value of the hour-pointer

Page 5: 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.

• PhoneBook B = new PhoneBook( );

• B.addEntry(“Simon”,422596160);

• B.getNumber(“Eduardo Vera” );

Agrega un par

Recupera el telefono

Crea un nuevo PhoneBook

Eduardo Vera422596160

Eduardo Vera

422596160

Page 6: 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.

¿ Por qué Object Orientation ?• Es simplemente una estrategia para

desarrollar programas grandes en forma más ordenada de manera de ir construyendo jerárquicamente objetos más complejos

Page 7: 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.

Programar en JAVA Significa escribir clases

• Qué componente (atributos) tendrá un objeto de esta clase

• Cómo se crean nuevos objetos (constructor) • Qué métodos puedo aplicar sobre un objeto de

esta clase• Es la nueva clase una extensión de la que había• Cómo voy a echar a andar el programa (main)

Page 8: 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.

La Clase String• Son parte del lenguaje

• Se crean: String s = new String(Hola Mundo”); pero esto se puede resumir con String s = “Hola Mundo”;

• Tamaño de un String: int i = s.length(); • k-esimo carácter: char c = s.charAt(k); • Subsecuencias: String sub = s.substring(k);

String sub = s.substring(inicio, fin);• Búsqueda de subsecuencias: int i = s.indexOf(“hola”); • Comparacion: boolean iguales s1.equals(s2);

int i = s1.compareTo(s2);

0 si s1==s2, >0 si s1>s2, <0 si s1<s2

Page 9: 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.

Búsqueda de SubstringsString s = “llego y dijo hola”;

int i = s.indexOf(“go”)´; i == 3 (parten de 0)

Ej: Contar las apariciones de “hola” en un string s:public class Cuenta { public static void main(String args[]) {

int i , apariciones = 0;while ((i = s.indexOf(“hola”)) !0 -1) {

++apariciones;s = s.substring(i+1);

}System.out.println(“el string hola aparecio “+

apariciones+ “veces”); }}

Page 10: 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.

Un objeto de la clase clock tendrá 3 componentes (atributos, variables)

hours minutes seconds

Cada vez que un nuevo objeto Clock es creado el valor de los atributos se pone en cero (the hour will be midnight)

Existirá un método para poner una hora nueva. Este método “recibe” el valor nuevo para la hora, los minutos y los segundos

también habrán 3 métodos que “devoverán” los valores actuales de cada componente

Clases definidas por el usuario: La clase Clock

Page 11: 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.

Escribir el archivo Clock.java, compilarlo y usarlo en un programa

Clock A = new Clock( );A.setTime(15,30,20);int h = A.getHour( ); int m = A.getMinutes(); int s = A.getMinutes();

hoursminutesseconds

15

2030

Clock.java ProgramClock1

Page 12: 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.

Como se usan las clases definidas por el usuario

El archivo con la clase definida debe ser compilado El archivo con la clase (resultado) debe estar en el mismo directorio que contiene el programaTambién puede ponerse el método main DENTRO de la definición de la clase.

Java MyClass

MyClass

new AnotherClass()

main(...

AnotherClass

Page 13: 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.

El registro de un estudiante

• Las variables son los datos del estudiante (name, age, grades, etc..)

• Métodos para setear y recuperar estos datos

Name: Sakano Tepe

Address: Musashino-shi.

Year Born: 1977

Set data

retrieve data

Student.java Program9

Page 14: 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.

The Phone Book

.... .....

2345678Clington

3456789Vera

11122233Matsumoto

NumberNameSet(name,number)Change(name,number)

Retrieve(name)

Page 15: 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.

Extendiendo la clase Clock

Vamos a añadir más información a la clase Clock. Vamos a poner las variables day y month y añadiremos los métodos necesarios para setear y recuperar estos valores.Si queremos mantener la clase Clock entonces podemos copiar todo el código en otro archivo (Clock2). Una forma máscómoda es hacer la segunda una extesión de la primera.

public class Clock2 extends Clock {declare otras variables (day y month)declare otros métodos

}

Clock2.java ProgramClock2.java

Page 16: 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.

Extendiendo una clase existente: Herencia

• Una de las características más poderosas de un lenguaje orientado a objeto es la posibilidad de extender una clase existente, incluso cuando no se cuenta con el código fuente. Esto se conoce como Herencia: la nueva clase hereda los atributos y métodos de la antigua

Original Class

Original Class

Definition of new variables and methods

Extended Class

Super-class of the extended class

Page 17: 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.

Extendiendo la clase Studentpublic class WasedaStudent extends Student{ int[] marks; int nmarks;

WasedaStudent(String x, String y, int z, int n) {super(x,y,z); // a call to the constructor of the superclassmarks = new int[n]; nmarks = 0;

}

public void putNewMark(int x) {marks[nmarks] = x;

nmarks = nmarks +1; }

public double showAverage() { double sum = 0.0; int i; for(i=0; i < nmarks; i=i+1)

sum = sum + marks[i]; return sum/nmarks; }}

Page 18: 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.

Usando la clase extendida

public class Program10 { public static void main(String args[]) { WasedaStudent ws1,ws2; ws1 =new WasedaStudent(“student1”,”Musashino-shi”,1980,5); ws2 =new WasedaStudent(“student2”,”Shinjuku-ku”,1981,7); ws1.putNewMark(10); ws1.putNewMark(5); ws1.putNewMark(4); ws2.putNewMark(5); ws2.putNewMark(8); ws2.putNewMark(7);ws2.putNewMark(4); System.out.println(ws1.showAverage()); System.out.println(ws2.showAverage()); ws1.show(); ws2.show(); }} Note that we can use all the methods of the superclass

Page 19: 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.

Resumen: Escribiendo clases

public class Classname {declaration of variableswrite contructor method(s)write other methods

}

Esto significa que la clase será conocida fuera del archivo

Nombres de clases empiezanpor convención con mayúsculas

Page 20: 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.

Cómo escribir métodos

public int getHours( ) {

return hours;

}

Public, private,protected or static

Type of value the method will return (void in case it does not return any value)

Parameters of the method (none in this case)

Name of the method(given by the programmer)

The instructions should bewritten within the brackets {}

Page 21: 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.

Cómo escribir constructores

Clock2 ( int h, int m, int s, int D, int M ) { . . .

}

No se necesita escribir nada aquí

Parametros que recibirá elconstructor para construir el nuevo objeto

El nombre del método es el mismo que el de la clase

Podemos escribir más de un constructorClock2 ( ) { . . . }

Este constructor pondría valores por omisión (default)

Page 22: 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.

public, private, protected y staticLos métodos y variables en una clase pueden ser clasificados como static private private protected y staticUn método o variable public puede ser accesada por cualquier programa que esté usando un objeto de esa clase. Para el caso de variables públicas, se pueden referir y modificar directamente :

public class Student { public String name; public String address; public int yearBorn; ......

Student s1 = new Student();s1.name = “Nelson Baloian”;

Page 23: 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.

Private & protectedUn método o variable private puede ser accesada sólo por los métodos que están escritos dentro del archivo. Incluso si una clase es derivada de otra que contiene una variable o método privado estas no pueden ser referidas. Un método o variable protected puede ser accesada por los métodos escritos en una clase extendida. Cuando no se pone nada frente a una variable o método se asume package (casi protected)

Page 24: 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.

Private, protected, public

Private: only known inside the file of the class

Protected: known also to extended classes

Public: known to anyone who knwos the class

Page 25: 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.

Variables estáticasA static variable means that there is only one variable for the whole class (contrary to the dynamic variables, from which each object has an own instance of it)Example: we want to count how many students we have created:

public class WasedaStudent extends Student { int[ ] marks; int nmarks; static int nstudents = 0; WasedaStudent(String x, String y, int z, int n) {

super(x,y,z);marks = new int[n]; nmarks = 0;

nstudents = nstudents +1; }

Page 26: 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.

Variables estáticas

nstudentsmarks []nmarksnameetc

marks []nmarksnameetc

marks []nmarksnameetc

marks []nmarksnameetc

Page 27: 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.

Métodos EstáticosA static method means that the method will be applied to no object. It is applied to the class.

public static int nStudents() {return nstudents ;

}

The program using it shoud write: int = WasedaStudent.nStudents();

The Math class from the language has many static methods implemented:

Math.sqr(x), Math.sin(x), Math.max(x,y), Math.pow(x,y)

What is the meaning of public static void main(...) ?

Page 28: 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.

Métodos Estáticos

nStudents()

nstudents

putNewMark()

showAverage()

marks []nmarksnameetc

Dynamic methods