You are on page 1of 6

1

TALLER DE PROGRAMACIÓN III

INGENIERÍA DE SISTEMAS

UNIVERSIDAD DE NARIÑO

ABSTRACCIÓN

La abstracción es la supresión intencionada (u ocultación) de algunos detalles de un proceso o artefacto, con el


fin de destacar más claramente otros aspectos, detalles o estructuras. Se trata de una técnica que las personas
utilizan diariamente para crear, comprender o manejar sistemas complejos. La abstracción se puede realizar a
diferentes niveles, dependiendo de qué aspectos del sistema se desea enfatizar. En cada nivel de abstracción
cierta información se muestra y cierta información se omite. No hay modo de representar todos los detalles
cuando un artefacto se muestra a un mayor nivel de abstracción. Incluso si todos los detalles pudiesen ser
descritos, nadie podría asimilar o procesar tanta información. Tomemos, por ejemplo, las escalas en los mapas
de información geográfica. En un mapamundi únicamente se muestran las características más importantes de
la superficie terrestre, como cadenas montañosas, corrientes oceánicas u otras estructuras de tamaño similar.
Sin embargo, características de menor tamaño, como pueblos o carreteras no aparecerán. Un mapa que cubra
una región del planeta menor, como por ejemplo un continente, podría incluir las fronteras y las grandes
ciudades. Un mapa de un único país incluiría ciudades más pequeñas, los nombres de ciertas montañas o las
carreteras principales. En el caso de un mapa de una gran ciudad encontraríamos las principales avenidas y
calles y los edificios o parques más importantes.

Como vemos, en cada nivel de abstracción se muestra cierta información mientras otra permanece
deliberadamente oculta. Esto puede incluso depender de quién vaya a utilizar el objeto o sistema. El
conocimiento que un ciudadano medio posee sobre los autos (su abstracción) incluye como se manejan y para
que sirven, pero su conocimiento de cómo funciona un auto se reduce, en general, a la de un dispositivo
compuesto por un motor que conectado a los mandos del vehículo, y en caso de disponer del combustible
apropiado, produce un movimiento giratorio que se transmite a las ruedas del coche a través de una caja de
cambios y un sistema de transmisión, lo cual permite al vehículo desplazarse a conveniencia del conductor.
Aunque, evidentemente esta descripción no es del todo exacta, es lo suficientemente aproximada para poder
utilizar el vehículo en la vida diaria. Mediante la abstracción creamos modelos de la realidad, evitando la
necesidad de conocer todos los detalles, y enfocando nuestra atención en determinadas características clave.
A menudo se describe este proceso como ocultación de la información. Es una técnica que se aplica a todos los
ámbitos, no sólo a la Informática.

PROGRAMACIÓN ORIENTADA A OBJETOS

La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a como
expresaríamos las cosas en la vida real, que otros tipos de programación. Durante años, los programadores se
2

han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para
conseguir que los esfuerzos de los programadores puedan ser reutilizados por otras personas se creó la POO, la
cual usa una serie de normas y estándares para cumplir este objetivo.

POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera
que la forma de hacer las cosas puede ser diferente entre uno u otro programador, aunque podamos hacer los
programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino
programar bien. Programar bien es importante, porque así podemos aprovechar de todas las ventajas de la POO.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas
en términos de objetos, propiedades y métodos.

CLASES Y OBJETOS

El mundo está lleno de objetos: el coche, la lavadora, la mesa, el teléfono, etc. El paradigma de programación
orientada a objetos proporciona las abstracciones necesarias para poder desarrollar sistemas software de una
forma más cercana a esta percepción del mundo real.

Mediante la POO, a la hora de tratar un problema, podemos descomponerlo en subgrupos de partes relacionadas.
Estos subgrupos pueden traducirse en unidades autocontenidas llamadas objetos. Antes de la creación de un
objeto, se debe definir en primer lugar su formato general, su plantilla, que recibe el nombre de clase. Por
ejemplo, pensemos que estamos intentando construir una aplicación de dibujo de cuadrados. Nuestro programa
va a ser capaz de pintar cuadrados con diferentes tamaños y colores: uno será rojo y de 3 centímetros de lado,
otro verde y de 5 centímetros de lado, etc. Como podemos deducir, cada cuadrado está definido por dos
características, lado y color, y contiene la operación dibuja. Desde el punto de vista de la POO, cada cuadrado
se va a representar como un objeto de la clase Cuadrado que es la contiene las características y operaciones
comunes de los objetos. En realidad, estamos creando un nuevo tipo, el tipo Cuadrado, y cada variable de este
tipo especial recibe el nombre de objeto.

Una clase, por lo tanto, puede definirse como un tipo de datos cuyas variables son objetos o instancias de una
clase. Puede decirse que el concepto de clase es estático y el concepto de objeto es dinámico; ya que, sólo
existe en tiempo de ejecución. Cada objeto de una clase comparte con el resto las operaciones, y a la vez posee
sus propios valores para los atributos que posee: esto es, su estado. Las operaciones, también llamadas
mensajes, se usarán tanto para cambiar el estado de un objeto como para comunicar objetos entre sí mediante
el paso de mensajes.

La clase es una plantilla o patrón a partir de la cual se crean muchos otros objetos similares, también se podría
definir a una clase como la agrupación de objetos que poseen características comunes.

Es decir, cuando se escribe un programa de computación en un lenguaje orientado a objetos está creando en
su computador un modelo de alguna parte del mundo real. Las partes con que se construye el modelo provienen
3

de los objetos que aparecen en el dominio del problema. Estos objetos deben estar representados en el modelo
computacional que se está creando.

Por ejemplo, se desea trabajar una simulación de tráfico. Un tipo de entidad con la que tendrá que trabajar es
autos. ¿Qué es un auto en nuestro contexto? ¿Es una clase o es un objeto? Algunas preguntas nos ayudarán a
tomar una decisión.

¿De qué color es un auto? ¿Cuán rápido puede marchar? ¿Dónde está en este momento?

Se observa que no podemos responder estas preguntas a menos que hablemos de un auto específico. La razón
es que, en este contexto, la palabra “auto” se refiere a la clase auto puesto que estamos hablando de los autos
en general y no de uno en particular.

Si digo, “Mi viejo auto se encuentra estacionado en el garaje de la casa”, podemos responder todas las preguntas
anteriores: este auto es rojo, no marcha demasiado rápido y está en mi garaje. Ahora estamos hablando de un
objeto, un ejemplo particular de un auto.

Generalmente, cuando nos referimos a un objeto en particular hablamos de una instancia. Es decir los objetos
son instancias de una clase en particular.

Cada clase contiene propiedades o atributos que son las características descriptivas de una clase. Cuando se
define una propiedad se especifica su nombre y su tipo de dato.

Por ejemplo en la Clase Alumno se pueden identificar los siguientes atributos

Apellidos de tipo String


Nombres de tipo String
Edad de tipo int
Estatura de tipo double
Las clases también poseen métodos que son los servicios que se le incluyen a la clase. Dentro de los métodos
se programan todas las funcionalidades que debe ofrecer la clase.

La sintaxis de la clase debe ser la siguiente:


4

public class MiClase{


//Definición de atributos
//Definición de métodos
}
public class Lavadora {

//atributos
private String marca;

private String capacidad;

//métodos
public Lavadora(String m, String c){
marca=m;
capacidad=c;
}

public void lavar(){


System.out.println("Estoy lavando");
}
public void secar(){
System.out.println("Estoy secando su ropa");
}
public String decirMarca(){
return marca;
}
public void cambiarMarca(String m){
marca=m;
}
}

¿QUE ES UN OBJETO?

Al inspeccionar objetos diferentes observará que todos los objetos de la misma clase tienen los mismos campos;
es decir que el número, el tipo de dato y los nombres de los campos de una misma clase son los mismos, mientras
que el valor de un campo en particular de cada objeto puede ser distinto. Por el contrario, los objetos de clases
diferentes pueden tener diferentes campos.

La razón es que el número, el tipo de dato y el nombre de los campos o atributos se definen en una clase, no
en un objeto. Por ejemplo cuando se crea un objeto de la clase Lavadora tendrá automáticamente los atributos
y los métodos definidos dentro de la clase.

LOS MÉTODOS

Los métodos en Java siempre son miembros de clases, no hay métodos o funciones fuera de ellas; su
implementación se incluye dentro del cuerpo de la clase.

Los métodos se pueden clasificar en cuatro tipos que son los siguientes:
5

Constructores. Un constructor es el primer método que se ejecuta al realizar la instancia de un objeto. Uno de
los usos principales de un constructor es la inicialización de los atributos de la clase. El método constructor
debe tener visibilidad pública y no posee retorno.

Consultores: Un consultor es el método que permite retornar el valor de un atributo con visibilidad private al
aplicar el concepto de encapsulamiento.

Modificadores: Un modificador es el método que permite asignar a un atributo con visibilidad private al aplicar
el concepto de encapsulamiento.

Analizadores: Un analizador es el método que permite implementar la lógica del servicio del mismo, es decir,
allí se implementan los algoritmos requeridos.

Ejemplo: Definición de una clase llamada Punto que contiene coordenadas x-y de un punto en un plano.

public class Punto {

private int x; // coordenada x


private int y; // coordenada y

public Punto(int x1, int y1) {// constructor


x = x1;
y = y1;
}
public Punto() { // constructor sin argumentos
x = y = 0;
}
public int leerX() { // devuelve el valor de x
return x;
}
public int leerY() { // devuelve el valor de y
return y;
}
void fijarX(int valorX) { // establece el valor de x

x = valorX;
}
void fijarY(int valorY) { // establece el valor de y

y = valorY;
}
}
Ejercicio: Crear una clase llamada Cuenta, la cual mantiene el saldo de una cuenta bancaria. Un banco ordinario
da servicio a muchas cuentas, cada una con su propio saldo, por lo que la clase debe declarar una variable de
instancia, de tipo double, llamada saldo. La clase Cuenta debe contener un constructor y tres métodos.

El método abonar no debe devolver datos cuando completa su tarea, por lo que su tipo de valor de retorno es
void. El método recibirá un parámetro llamado monto: un valor double que se sumará al saldo.

El método retirar debe devolver datos cuando completa su tarea, por lo que su tipo de valor de retorno es
double. El método recibirá un parámetro llamado monto: un valor double que se restará al saldo. El retiro se
puede hacer si el valor del saldo actual es igual o mayor al valor enviado. Si se puede realizar el retiro se retorna
el valor retirado de lo contrario se retorna cero.
6

El método obtenerSaldo permitirá obtener el valor del saldo de un objeto Cuenta específico. El método
especifica el tipo de valor de retorno double y una lista de parámetros vacía.

Ejercicio: Crear una clase llamada Racional que permite crear un número racional (numerador y denominador).
Debe tener un constructor con parámetros (si el denominador enviado es 0 se debe asignar 1 al denominador).
Métodos consultores y modificadores para cada atributo. Un método que retorne una cadena indicando si el
número es propio o impropio. Un método que retorne una cadena que convierta la fracción en un número mixto
cuando sea posible.

You might also like