Lenguaje de Programación

Ing. Jorge Butler

CLASES Y OBJETOS

1. Clase
El elemento básico de la programación orientada a objetos en Java es la clase. Una clase es
una plantilla para un objeto. Por lo tanto define la estructura de un objeto y su interfaz
funcional, es decir, define los métodos (comportamiento) y atributos (datos) de un grupo
de objetos de características similares. Ejemplo:

Clase Empleado Nombre de la Clase

trabajar, ir, asistir Métodos (funciones)
nombres, apellidos, sueldo
Atributos (datos)

Para crear una clase se utiliza la palabra reservada class, seguida de un identificador legal
y un bloque delimitado por dos llaves para el cuerpo de la clase.

class NombreClase{
//...
//cuerpo de la clase
//...
}

Un archivo de Java debe tener el mismo nombre que la clase que contiene, y se les suele
asignar la extensión ".java". Por ejemplo la clase Empleado se guardaría en un fichero que
se llamase Empleado.java

1.1. Atributos
Los atributos son las características individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables
denominadas de instancia, y cada objeto particular puede tener valores distintos para estas
variables.
Las variables de instancia también denominados miembros dato, son declaradas en la clase
pero sus valores son fijados y cambiados en el objeto.
Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase
y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo
cuatro, para todos los automóviles.

tipo nombre;

Los atributos se declaran dentro de las llaves de apertura y cierre de la declaración de la
clase. Ejemplo:

class Empleado{
String nombres, apellidos;
double sueldo;
int edad;
}

1.2. Métodos
Los métodos son subrutinas que definen la interfaz de una clase, sus capacidades y
comportamiento. Los métodos permiten al programador modularizar sus programas. Todas
las variables declaradas en las definiciones de los métodos son variables locales, solo se
conocen en el método en el que se define. Los métodos pueden tener una lista de
parámetros que permiten comunicar información entre métodos. Los parámetros de un
método también son variables locales.

Carrión. Si no se definen constructores para una clase. int edad. Método Constructor Un constructor es un método que inicia un objeto inmediatamente después de su creación. Ejemplo: class Empleado{ Atributos o Variables String nombres. Ejemplo: Empleado unIngeniero. ir. Puede sobrecargarse. void trabajar(String n. A estas variables se las conoce como referencias a objeto. Además. las boolean a false y las referencias (cadenas) a null. puede tener varias implementaciones. apellidos. ni siquiera void. el compilador crea un constructor por omisión que no recibe argumentos. asistir Atributos Fernando. double sueldo. int horas. Esta es una declaración de una variable unIngeniero que es una referencia a un objeto de la clase Empleado. } } 2.Lenguaje de Programación Ing. Un objeto se distingue de otros miembros de la clase por sus atributos. de momento con un valor por defecto de null. El constructor no devuelve ningún tipo. Objeto Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar para declarar una nueva variable. La declaración de una referencia a objeto se realiza: Clase objeto. un objeto es una instancia o variable de una clase. unIngeniero Nombre del Objeto Métodos trabajar. El constructor por omisión de una clase invoca al constructor de la clase y procede a inicializar las variables de tipo de datos numéricos primitivos: las variables numéricas a 0. Jorge Butler tipo Nombre_del_metodo (parámetros) Los métodos se declaran al mismo nivel que las variables de instancia dentro de una definición de clase. Por lo tanto. Tiene el mismo nombre de la clase a la que pertenece. int dias){ Métodos } double asistir(int faltas){ return 0. evitándonos tener que iniciar las variables. 2500 3. .

El valor this se refiere al objeto sobre el que ha sido llamado el método actual. Operador punto (. 7. ya que el código puede ser utilizado como una tecnología de caja negra (igual que los circuitos integrados en la industria electrónica). Referencia this Java incluye un valor de referencia especial llamado this. Ejemplo: Empleado unIngeniero = new Empleado(). Encapsulación Encapsulación es el término de orientación a objetos que describe la vinculación de las operaciones y estado a un objeto particular. y el interfaz público proporcionado ser compatible con el original. La encapsulación está íntimamente relacionada con la ocultación de la información. Esto es extremadamente útil al modificar código (ya que se restringe la propagación de cambios). 5. 8. seleccionados a través de otras instancias. También se fomenta la reusabilidad. Java utiliza los siguientes modificadores: . Si hay dos objetos que utilicen el mismo código. int y){ Constructor con parámetros } } 4. Entonces los programas que utilizaban el objeto pueden seguir funcionando sin alteración alguna.método() 6. El operador new Permite crear un nuevo objeto invocando al método constructor de la clase. definiendo qué partes de un objeto son visibles y qué partes están ocultas. Jorge Butler class Empleado{ Empleado(){ Constructor sin parámetros } Empleado(int x. Se puede utilizar this siempre que se requiera una referencia a un objeto del tipo de una clase actual.) se utiliza para acceder a:  Las variables de instancia: Nombre_del_objeto. Modificadores de Acceso Los modificacdores de acceso definen niveles de visibilidad entre miembros (variables y métodos) de una clase y otros objetos. Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un espacio para un conjunto de datos como el que definen los atributos de la clase que se indica en la instanciación.) El operador punto (. cada uno tiene su propio valor único de this. A este conjunto de variables se le denomina variables de instancia.variable_de_instancia  Los métodos contenidos en un objeto: Nombre_del_objeto.Lenguaje de Programación Ing. que se utiliza dentro de cualquier método para referirse al objeto actual. La ventaja de la ocultación de los detalles de implementación es que el objeto puede cambiar. Clase objeto = new metodoConstructor().

Otros modificadores de acceso para miembros 8.  native: especifica que la implementación de un método es externa: nativa en C.  synchonized: especifica que solo se permitirá un camino de ejecución en un método. ni siquiera llaves. que no puede ser sobreescrito por subclase alguna. pues la implementación se encuentra en las subclases. Por omisión (sin modificador). 8.2.2.1. . El método no tendrá cuerpo. public void abrir(){ } 8.  private: Especifica que las variables y métodos de una clase podrán ser accedidas sólo por los métodos de la misma clase. además de los métodos de la misma clase. esto es.1. por los métodos de todas las clases del mismo paquete y por las subclases de esta aunque no se encuentren en el mismo paquete.  protected: Especifica que las variables y métodos de una clase podrán ser accedidas. aunque sean de clases de otros paquetes diferentes al de la clase. - Si no se especifica un modificador. las variables y métodos de una clase solo podrán ser accedidas por clases del mismo paquete.  static: Especifica que un método es independiente de cualquier instancia. Un miembro tiene acceso a: Puede ser accedido por métodos public protected omitido private de: La misma clase Si Si Si Si Subclases del mismo paquete Si Si Si - Otras clases del mismo paquete Si Si Si - Subclases en otros paquetes Si Si .2. por lo que también solo puede acceder a variables de instancia estáticas y podrá invocar directamente solo métodos estáticos de su clase. cada objeto (instancia de clase) reserva . modificador_de_acceso tipo nombre_variable. Para Miembros (variables y métodos)  public: Especifica que las variables y métodos de una clase podrán ser accedidas por todos los objetos.  static: Se especifica que una variable es común para todas las instancias de la clase. Métodos  final: Especifica que un método tiene una implementación constante. El modificador de acceso se especifica inmediatamente antes que el tipo de una variable de instancia o antes del tipo de retorno de un método. modificador_de_acceso tipo nombre_metodo( ){ } Ejemplos: private int a.Lenguaje de Programación Ing.2. Jorge Butler 8. - Otras clases de otros paquetes Si .  abstract: Son aquellos métodos declarados pero no implementados. Variables  final: Especifica que una variable tiene un valor constante.

consumo = consumo.00 y 10% para consumos menores e iguales a S/. } public String getApellidos (){ return apellidos. Para Clases La visibilidad de una clase esta determinada en relación a los paquetes:  public: Permite que una clase sea visible fuera del paquete donde pertenece.apellidos = apellidos.nombre = nombre .50.3. Jorge Butler memoria para sus variables de instancia cuando es creado. esto es no puede tener subclases. Ejemplo Calcular el total que paga un cliente por un consumo en un restaurante. } .  transient: Especifica al compilador que una variable no debe ser serializada. nuevos espacios de memoria son reservados. } public double getConsumo (){ return consumo. por cada nuevo objeto. //método constructor public Cliente(){ } //métodos accesores public void setNombre(String nombre){ this.50.00. Bastará que una clase contenga un método abstracto para que tenga que ser declarada también como abstracta.Lenguaje de Programación Ing.  final: Especifica que una clase no puede extenderse. Las variables estáticas reservan un solo espacio independientemente de cuantas instancias de la clase se hayan creado. cargará y almacenará la variable cada vez que sea accedida. desc = desc. private String apellidos.  abstract: Una clase abstracta esta compuesta de uno o más métodos abstractos. } public double getDesc (){ return desc. } public void setDesc(double desc){ this. dicho restaurante realiza descuentos del 20% para consumos mayores a S/. public class Cliente{ //atributos private String nombre. private double consumo. } public void setConsumo(double consumo){ this. en vez de tomar el valor de un registro. 8. } public void setApellidos(String apellidos){ this.  volatile: Especifica que el compilador generará. los que son declarados pero no implementados. private double desc. } public String getNombre(){ return nombre . pues la implementación se encuentra en las subclases.

10. c.readLine()).setConsumo(Double.calculoDesc(). c.getDesc()).println(“Consumo:”+ c. } public void calculoTotal(){ total = consumo –desc. else desc = consumo * 0.getNombre() + “ ” +c.out.in). } public double getTotal (){ return total.out. Cliente c = new Cliente ().getTotal()). c.setApellidos(q.out.getApellidos()). System.out. } } .readLine())).getConsumo()). System. System. BufferedReader q= new BufferedReader(p).Lenguaje de Programación Ing.20.setNombre(q. System. c.readLine()).println(“Ingrese apellidos del cliente”). System.total = total.parseDouble(q. } } public class Aplicacion{ public static void main(String[] args) throws IOException throws IOException{ InputStreamReader p= new InputStreamReader(System.calculoTotal(). } public void calculoDesc(){ if(consumo>50.println(“Ingrese nombre del cliente”). System.println(“Descuento:”+ c. System.out.out.println(“Cliente:”+ c. c.out.println(“Total:”+ c. Jorge Butler public void setTotal(double total){ this.00) desc = consumo * 0.println(“Ingrese consumo”).