Está en la página 1de 6

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.
Lenguaje de Programación
Ing. 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. Ejemplo:

class Empleado{
Atributos o Variables
String nombres, apellidos;
double sueldo;
int edad;

void trabajar(String n, int horas, int dias){


Métodos
}
double asistir(int faltas){
return 0;
}
}

2. Objeto
Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar para
declarar una nueva variable. A estas variables se las conoce como referencias a objeto.
Por lo tanto, un objeto es una instancia o variable de una clase. La declaración de una
referencia a objeto se realiza:

Clase objeto;

Ejemplo:
Empleado unIngeniero;

Esta es una declaración de una variable unIngeniero que es una referencia a un objeto de
la clase Empleado, de momento con un valor por defecto de null.
Un objeto se distingue de otros miembros de la clase por sus atributos.

unIngeniero Nombre del Objeto

Métodos
trabajar, ir, asistir
Atributos
Fernando, Carrión, 2500

3. Método Constructor
Un constructor es un método que inicia un objeto inmediatamente después de su creación,
evitándonos tener que iniciar las variables. Tiene el mismo nombre de la clase a la que
pertenece. Además, puede tener varias implementaciones. Puede sobrecargarse. El
constructor no devuelve ningún tipo, ni siquiera void.
Si no se definen constructores para una clase, el compilador crea un constructor por
omisión que no recibe argumentos. 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, las boolean a false y las referencias (cadenas) a
null.
Lenguaje de Programación
Ing. Jorge Butler

class Empleado{
Empleado(){
Constructor sin parámetros
}
Empleado(int x, int y){
Constructor con parámetros
}
}

4. El operador new
Permite crear un nuevo objeto invocando al método constructor de la clase. 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. A este conjunto de variables se le denomina variables de instancia.

Clase objeto = new metodoConstructor();

Ejemplo:

Empleado unIngeniero = new Empleado();

5. Operador punto (.)


El operador punto (.) se utiliza para acceder a:

 Las variables de instancia:

Nombre_del_objeto.variable_de_instancia

 Los métodos contenidos en un objeto:

Nombre_del_objeto.método()

6. Referencia this
Java incluye un valor de referencia especial llamado this, que se utiliza dentro de cualquier
método para referirse al objeto actual. El valor this se refiere al objeto sobre el que ha sido
llamado el método actual. Se puede utilizar this siempre que se requiera una referencia a
un objeto del tipo de una clase actual. Si hay dos objetos que utilicen el mismo código,
seleccionados a través de otras instancias, cada uno tiene su propio valor único de this.

7. 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. La encapsulación está íntimamente relacionada
con la ocultación de la información, definiendo qué partes de un objeto son visibles y qué
partes están ocultas.
La ventaja de la ocultación de los detalles de implementación es que el objeto puede
cambiar, y el interfaz público proporcionado ser compatible con el original. Entonces los
programas que utilizaban el objeto pueden seguir funcionando sin alteración alguna. Esto
es extremadamente útil al modificar código (ya que se restringe la propagación de
cambios). También se fomenta la reusabilidad, 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).

8. Modificadores de Acceso
Los modificacdores de acceso definen niveles de visibilidad entre miembros (variables y
métodos) de una clase y otros objetos. Java utiliza los siguientes modificadores:
Lenguaje de Programación
Ing. Jorge Butler

8.1. 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, aunque sean de clases de otros paquetes diferentes al de la
clase.
 protected: Especifica que las variables y métodos de una clase podrán ser
accedidas, además de los métodos de la misma clase, 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.
 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.

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 - -
Otras clases de otros paquetes Si - - -

Si no se especifica un modificador, las variables y métodos de una clase solo podrán ser
accedidas por clases del mismo paquete.
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_variable;

modificador_de_acceso tipo nombre_metodo( ){


}

Ejemplos:

private int a;
public void abrir(){

8.2. Otros modificadores de acceso para miembros

8.2.1. Métodos

 final: Especifica que un método tiene una implementación constante, esto es,
que no puede ser sobreescrito por subclase alguna.
 static: Especifica que un método es independiente de cualquier instancia, 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.
 abstract: Son aquellos métodos declarados pero no implementados, pues la
implementación se encuentra en las subclases.
 synchonized: especifica que solo se permitirá un camino de ejecución en un
método.
 native: especifica que la implementación de un método es externa: nativa en C.
El método no tendrá cuerpo, ni siquiera llaves.

8.2.2. Variables

 final: Especifica que una variable tiene un valor constante.


 static: Se especifica que una variable es común para todas las instancias de la
clase. Por omisión (sin modificador), cada objeto (instancia de clase) reserva
Lenguaje de Programación
Ing. Jorge Butler

memoria para sus variables de instancia cuando es creado; por cada nuevo
objeto, nuevos espacios de memoria son reservados. Las variables estáticas
reservan un solo espacio independientemente de cuantas instancias de la clase
se hayan creado.
 transient: Especifica al compilador que una variable no debe ser serializada.
 volatile: Especifica que el compilador generará, cargará y almacenará la
variable cada vez que sea accedida, en vez de tomar el valor de un registro.

8.3. 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.
 abstract: Una clase abstracta esta compuesta de uno o más métodos abstractos,
los que son declarados pero no implementados, pues la implementación se
encuentra en las subclases. Bastará que una clase contenga un método abstracto
para que tenga que ser declarada también como abstracta.
 final: Especifica que una clase no puede extenderse, esto es no puede tener
subclases.

Ejemplo

Calcular el total que paga un cliente por un consumo en un restaurante, dicho restaurante
realiza descuentos del 20% para consumos mayores a S/.50.00 y 10% para consumos
menores e iguales a S/.50.00.

public class Cliente{


//atributos
private String nombre;
private String apellidos;
private double desc;
private double consumo;
//método constructor
public Cliente(){

}
//métodos accesores
public void setNombre(String nombre){
this.nombre = nombre ;
}
public String getNombre(){
return nombre ;
}
public void setApellidos(String apellidos){
this.apellidos = apellidos;
}
public String getApellidos (){
return apellidos;
}
public void setConsumo(double consumo){
this.consumo = consumo;
}
public double getConsumo (){
return consumo;
}
public void setDesc(double desc){
this. desc = desc;
}
public double getDesc (){
return desc;
}
Lenguaje de Programación
Ing. Jorge Butler

public void setTotal(double total){


this.total = total;
}
public double getTotal (){
return total;
}

public void calculoDesc(){


if(consumo>50.00)
desc = consumo * 0.20;
else
desc = consumo * 0.10;
}
public void calculoTotal(){
total = consumo –desc;
}
}

public class Aplicacion{


public static void main(String[] args) throws IOException throws IOException{
InputStreamReader p= new InputStreamReader(System.in);
BufferedReader q= new BufferedReader(p);
Cliente c = new Cliente ();
System.out.println(“Ingrese nombre del cliente”);
c.setNombre(q.readLine());
System.out.println(“Ingrese apellidos del cliente”);
c.setApellidos(q.readLine());
System.out.println(“Ingrese consumo”);
c.setConsumo(Double.parseDouble(q.readLine()));
c.calculoDesc();
c.calculoTotal();
System.out.println(“Cliente:”+ c.getNombre() + “ ” +c.getApellidos());
System.out.println(“Consumo:”+ c.getConsumo());
System.out.println(“Descuento:”+ c.getDesc());
System.out.println(“Total:”+ c.getTotal());
}
}

También podría gustarte