Está en la página 1de 8

Ingeniería de software

Programación orientada a objetos

Rodolfo Andrés argel ramos

Universidad de Cartagena

Segundo semestre

Lorica – córdoba

2020
Clases y Objetos
Diferencia entre Clases y Objetos
Aunque los conceptos de clase y objetos son muy diferentes, el hecho de usarlos
indistintamente en algunos contextos hace que se pueda generar alguna confusión
al respecto. En la figura 2.4a y figura 2.4b se muestra, para el caso de la tienda, el
correspondiente diagrama de clases y un ejemplo de un posible diagrama de
objetos. Allí se puede apreciar que la clase Tienda describe todas las tiendas
imaginables que vendan 4 productos.
Una clase no habla de un escenario particular, sino del caso general. Nunca dice
cuál es el valor de un atributo, sino que se contenta con afirmar cuáles son los
atributos (nombre y tipo) que deben tener los objetos que son instancias de esa
clase. Los objetos, por su parte, siempre pertenecen a una clase, en el sentido de
que cumplen con la estructura de atributos que la clase exige. Por ejemplo, puede
haber miles de tiendas diferentes, cada una de las cuales vende distintos
productos a distintos precios. Piense que cada vez que instalamos el programa del
caso de estudio en una tienda distinta, el dueño va a querer que los objetos que se
creen para representarla reflejen el estado de su propia tienda.
Los métodos de una clase, por su parte, siempre están en ella y no copiados en
cada uno de sus objetos. Por esta razón cada objeto debe saber a qué clase
pertenece, para poder buscar en ella los métodos que puede ejecutar. Los
métodos están escritos de manera que se puedan utilizar desde todos los objetos
de la clase. Cuando un método de la clase Tienda dice producto1.darNombre(), le
está pidiendo a una tienda particular que busque en su propio escenario el objeto
al cual se llega a través de la asociación producto1, y le pida a éste su nombre
usando el método que todos los productos tienen para hacerlo. En este sentido se
puede decir que los métodos son capaces de resolver los problemas en abstracto,
y que cada objeto los aplica a su propio escenario para resolver su problema
concreto.
Creación de Objetos de una Clase
Recordemos la creación de objetos visto en el nivel anterior. Un objeto se crea
utilizando la instrucción new y dando el nombre de la clase de la cual va a ser una
instancia. Todas las clases tienen un método constructor por defecto, sin
necesidad de que el programador tenga que crearlo. Como no es responsabilidad
del computador darle un valor inicial a los atributos, cuando se usa este
constructor, éstos quedan en un valor que se puede considerar indefinido.
Ejemplo
Se hace la inicialización de los atributos de los objetos de la clase.
En este ejemplo mostramos los constructores de las clases Tienda y Producto, así
como la manera de pedir la creación de un objeto de cualquiera de esos dos tipos.
public Producto(Tipo pTipo, String pNombre, double pValorUnitario, int
pCantidadBodega, int pCantidadMinima)
{
tipo = pTipo;
nombre = pNombre;
valorUnitario = pValorUnitario;
cantidadBodega = pCantidadBodega;
cantidadMinima = pCantidadMinima;
cantidadUnidadesVendidas = 0;
}
-El constructor exige 5 parámetros para poder inicializar los objetos de la clase
Producto.
-En el constructor se asignan los valores de los parámetros a los atributos.
Producto p=new Producto(Tipo.PAPELERIA, "lápiz", 500.0, 30, 9);
-Este es un ejemplo de la manera de crear un objeto cuando el constructor tiene
parámetros.
-Este es el objeto que se crea con la llamada anterior.
-El objeto creado se ubica en alguna parte de la memoria del computador. Dicho
objeto es referenciado por el atributo o la variable llamada "p".
public Tienda( )
{
producto1 = new Producto( Tipo.PAPELERIA, "Lapiz", 550.0, 18, 5 );
producto2 = new Producto( Tipo.DROGUERIA, "Aspirina", 109.5, 25, 8 );
producto3 = new Producto( Tipo.PAPELERIA, "Borrador", 207.3, 30, 10 );
producto4 = new Producto( Tipo.SUPERMERCADO, "Pan", 150.0, 15, 20 );
dineroEnCaja = 0;
}
-Puesto que es necesario que la tienda tenga 4 productos, su método constructor
debe ser como el que se presenta. Supone que en la caja de la tienda no hay
dinero al comenzar el programa.
Vamos a practicar la creación de escenarios usando los métodos constructores de
las clases Tienda y Producto. En el programa del caso de estudio, la
responsabilidad de crear el estado de la tienda sobre la cual se trabaja está en la
clase principal del mundo (clase Tienda). En una situación real, dichos valores
deberían leerse de un archivo o de una base de datos, pero en nuestro caso se
utilizará un escenario predefinido. Si quiere modificar los datos de la tienda sobre
los que trabaja el programa, puede darle otros valores en el momento de construir
las instancias.
Declaración de una Clase en Java
Vimos como los elementos principales de una clase son sus atributos (datos) y sus
métodos (código para manipular los datos). Veamos una clase simple, Publicacion
que podríamos utilizar para almacenar los datos sobre nuestra colección
bibliográfica:

El nombre de la clase, Publicación debe ser un identificador válido en Java y por


convención, empieza por letra mayúscula. Una declaración de clase crea un
nombre de tipo en Java. De esta forma las referencias a objetos Publicación se
pueden declarar con un simple:

Las variables de una clase se llaman campos. La clase Publicacion tiene tres
campos, idPublicacion que identifica de forma unívoca cada publicación, titulo que
es el título de la publicación y autor que ha firmado la publicación.
Podríamos definir un campo propietario. Con este campo indicaríamos el
propietario del libro. Sería útil, si sólo vamos a almacenar nuestras publicaciones,
que el valor de este campo lo compartan todas los objetos que podamos definir a
partir de esta clase. Calificaríamos la declaración de este campo con la palabra
reservada static:

Tipos de Visibilidad
PROTECTED: visible desde el interior de la clase y desde las clases heredadas
(sub-clases o hijas). PRIVATE: visible sólo desde el interior de la clase. No son
heredados por ninguna sub-clase. No son accesibles desde ninguna otra clases,
por más que estén en el mismo paquete.
TIPOS DE MÉTODOS
Un método es una abstracción de una operación que puede hacer o realizarse con
un objeto. Una clase puede declarar cualquier número de métodos que lleven a
cabo operaciones de lo más variado con los objetos. En esta sección los métodos
se clasifican en dos grupos: los métodos de instancia y los métodos de clase.
MÉTODOS DE INSTANCIA
Las clases pueden incluir en su declaración muchos métodos o no declarar
ninguno. Los métodos pueden clasificarse en métodos de instancia y métodos de
clase.
Los métodos de instancia operan sobre las variables de instancia de los objetos
pero también tienen acceso a las variables de clase. La sintaxis de llamada a un
método de instancia es:
// Llamada tipica a un metodo de instancia

idReferencia.idMetodo(parametros);

Todas las instancias de una clase comparten la misma implementación para un


método de instancia. La instancia que hace la llamada al método es siempre un
parámetro o argumento implícito. Dentro de un método de instancia, el
identificador de una variable de instancia hace referencia al atributo de la instancia
concreta que hace la llamada al método (suponiendo que el identificador del
atributo no ha sido ocultado por el de un parámetro).
En el ejemplo anterior en la declaración de la clase CuentaBancaria, los métodos
saldo y transferencia son métodos de instancia.
public double saldo() {

return this.saldo;

public void transferencia( CuentaBancaria origen ) {

this.saldo += origen.saldo;

origen.saldo = 0;

Ejemplos de llamada a estos métodos dentro de PruebaCuentaBancaria:


CuentaBancaria c1 = new CuentaBancaria();

CuentaBancaria c2 = new CuentaBancaria(20.0);

c1.transferencia(c2);

System.out.println("Cuenta con: " + c1.saldo() + " euros");

MÉTODOS DE CLASE
En principio, los métodos de clase no operan sobre las variables de instancia de
los objetos. Los métodos de clase pueden trabajar con las variables de clase pero
no pueden acceder a las variables de instancia declaradas dentro de la clase, a no
ser que se crea una nueva instancia y se acceda a las variables de instancia a
través del nuevo objeto. Los métodos de clase también pueden ser llamados
precediendolos con el identificador de la clase, sin necesidad de utilizar el de una
instancia.
IdClase.idMetodo(parametros); // Llamada tipica a un metodo de
clase

La palabra static determina la declaración de un método de clase. Por defecto, si


no se indica la palabra static, el método declarado se considera un método de
instancia.
En el ejemplo anterior en la declaración de la clase CuentaBancaria, el método
incCuentas es un método de clase.
public static void incCuentas () {

totalCuentas++;

Un ejemplo de llamada a este método dentro de PruebaCuentaBancaria sería:

CuentaBancaria.incCuentas();

Las diferencias entre los métodos de instancia y los de clase se resumen aquí:

Diferencias entre los métodos de instancia y los métodos de clase


Los métodos de clase o estáticos se pueden considerar equivalentes a las rutinas
(globales) de otros lenguajes de programación como Pascal o C. Como ejemplos
típicos de métodos estáticos pueden indicarse los métodos de Java
correspondientes a las funciones matemáticas sin, cos, exp, pow... de la clase
java.lang.Math. Las llamadas a estos métodos se realizan anteponiendo el
identificador de la clase Math al identificador del método: Math.sin(angulo)...

También podría gustarte