La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Podemos pensar en otros objetos no existentes: el reloj

Presentaciones similares


Presentación del tema: "Podemos pensar en otros objetos no existentes: el reloj"— Transcripción de la presentación:

1 Podemos pensar en otros objetos no existentes: el reloj
Las variables son las posiciones de los punteros del segundero, minutero y horario Los métodos son para poner los valores y preguntar “qué hora es?” Set the pointers’ value What time is it ?

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

3 Given a name ask the telephone number
El libro telefónico Las variables son listas de números y nombres Los métodos son para registrar un nuevo par, Preguntar el teéfono dado un nombre, cambiar un teléfono o borrar un par Set a name with a telephone number change the telephone number delete a pair name-telephone Given a name ask the telephone number

4 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

5 Diseño de los métodos (1)
Clock A = new Clock( ); Clock A; A = new Clock(); A.setTime(15,35,45); int i; i = A.getHour( ); Creates a new Clock object Put pointers in 15, 35 and 45 Get the value of the hour-pointer

6 Diseño de los métodos (2)
Phonebook B = new Phonebook( ); B.addEntry(“Simón Vera”, ); 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 Simón Vera Dado un nobre como parámetro recupera el número

7 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 la consola

8 La clase Clock Un Clock tendrá trés variables (atributos, campos)
int hours int minutes int seconds Cada vez que se cree un nuevo objeto Clock sus trés variables valdrán 0 (medianoche) El método setTime() va a poner una nueva hora. Este método requerirá trés parámetros: hh, mm, ss También tendremos 3 métodos que retornarán el valor de cada puntero (por ejemplo El método getTime() retorna un String con la hora en el formato hh:mm:ss

9 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 ProgramClock2

10 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()

11 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

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

13 El Phone Book: Implementación
int[] numbers String[] names 1 2 3 4 5 6 Jun Kenichiro Kamugisha 45678 12345 55443 int next Maximum Phonebook program dos

14 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

15 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(); }

16 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

17 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)

18 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 {}

19 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

20 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

21 Extendamos laclase 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

22 Extendiendo la clase Console
Como dijimos, incluso si no sabemos cómo fue programada La superclase podemos usarla para extenderla, ya que para Esto se usa el archivo class. Por ejemplo, podemos extender la consola para incluir los métodos readArray(int n) y a readStudent() public class Console2 extends Console { public } Console2.java program

23 La clase StringTokenizer
El Constructor de esta clase recibe un string (y posiblemente También un separador). El string es separado en varios sub-strings, de acuerdo al separador (espacio si no se recibe nada). Estos pueden ser recuperados secuencialmente por el método nextToken(). También existe el método hasMoreTokens() que retorna true si todavía quedan más substrings por retornar. String s1 = “we are a happy family” StringTokenizer st = new StringTokenizer(s1); st we are a happy family String s = st.getToken(); st are a happy family

24 La clase Object Exite 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

25 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

26 Public, private, protected and static
Methods and variables in a class can be classified as static private private protected and static A public method or variable can be accessed by any program using an object of the class. In case of public variables, they may be modified directly by the program: public class Student { public String name; public String address; public int yearBorn; ...... Student s1 = new Student(); s1.name = “Nelson Baloian”;

27 Private & protected A private method or variable can be accessed only by the methods written inside the class definition. Even an other class derived from the one containing a private method or variable cannot access them ! A protected method or variable can be accessed only by the methods written inside the class definition and by the methods of an extended class When there is no classifying keyword before a method or a variable, that method or variable is assumed to be protected

28 Private, protected, public
Public: known to anyone who knwos the class Protected: known also to extended classes Private: only known inside the file of the class

29 Static Variables A 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 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; }

30 Static Variables WasedaStudent2.class nstudents ws21 ws22 ws23 marks
name etc nstudents ws21 Marks name etc ws22 marks name etc marks name etc ws23

31 Static Methods A static method means that the method will be applied to no object. It is applied to the class. The program using it shoud write: int i = WasedaStudent.nSt(); 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) Another possibility is to declare nstudents as public and Any program can invoke it as WasedaStudent2.nstudents But any program can change its value then !

32 Static Methods Static methods are applied to a classname nstudents
putNewMark() marks name etc Dynamic methods are applied to an object showAverage()


Descargar ppt "Podemos pensar en otros objetos no existentes: el reloj"

Presentaciones similares


Anuncios Google