Está en la página 1de 7

Lección 1: Conceptos de programación orientada a objetos

¿Qué es un objeto?

Un objeto es un paquete de software de estado y comportamiento relacionados. Los objetos de software a menudo se


usan para modelar los objetos del mundo real que se encuentran en la vida cotidiana. 

Los objetos son clave para comprender la tecnología orientada a objetos . Mire a su alrededor ahora y encontrará muchos
ejemplos de objetos del mundo real: su perro, su escritorio, su televisor, su bicicleta.

Los objetos del mundo real comparten dos características: todos tienen estado y comportamiento. Los perros tienen
estado (nombre, color, raza, hambre) y comportamiento (ladrar, buscar, mover la cola). Las bicicletas también tienen
estado (marcha actual, cadencia actual del pedal, velocidad actual) y comportamiento (cambio de marcha, cambio de
cadencia del pedal, aplicación de frenos). Identificar el estado y el comportamiento de los objetos del mundo real es una
excelente manera de comenzar a pensar en términos de programación orientada a objetos.

Tómese un minuto ahora mismo para observar los objetos del mundo real que se encuentran en su área inmediata.  Para
cada objeto que vea, hágase dos preguntas: "¿En qué estados posibles puede estar este objeto?" y "¿Qué
comportamiento posible puede realizar este objeto?". Asegúrese de anotar sus observaciones. Mientras lo hace, notará
que los objetos del mundo real varían en complejidad; su lámpara de escritorio puede tener solo dos estados posibles
(encendido y apagado) y dos comportamientos posibles (encender, apagar), pero su radio de escritorio puede tener
estados adicionales (encendido, apagado, volumen actual, estación actual) y comportamiento (encendido , apagar,
aumentar el volumen, disminuir el volumen, buscar, escanear y sintonizar). También puede notar que algunos objetos, a
su vez, también contendrán otros objetos. Todas estas observaciones del mundo real se traducen en el mundo de la
programación orientada a objetos.

Un objeto de software.

Los objetos de software son conceptualmente similares a los objetos del mundo real: también consisten en estado y
comportamiento relacionado. Un objeto almacena su estado en campos (variables en algunos lenguajes de
programación) y expone su comportamiento a través de métodos (funciones en algunos lenguajes de programación). Los
métodos operan en el estado interno de un objeto y sirven como el mecanismo principal para la comunicación de objeto a
objeto. Ocultar el estado interno y exigir que toda la interacción se realice a través de los métodos de un objeto se
conoce como encapsulación de datos , un principio fundamental de la programación orientada a objetos.

Considere una bicicleta, por ejemplo:


Una bicicleta modelada como un objeto de software.

Al atribuir el estado (velocidad actual, cadencia actual del pedal y marcha actual) y proporcionar métodos para cambiar
ese estado, el objeto mantiene el control de cómo el mundo exterior puede usarlo. Por ejemplo, si la bicicleta solo tiene 6
marchas, un método para cambiar de marchas podría rechazar cualquier valor que sea menor que 1 o mayor que 6.

La agrupación de código en objetos de software individuales proporciona una serie de beneficios, que incluyen:

1. Modularidad: el código fuente de un objeto se puede escribir y mantener independientemente del código fuente
de otros objetos. Una vez creado, un objeto se puede pasar fácilmente dentro del sistema.
2. Ocultar información: al interactuar solo con los métodos de un objeto, los detalles de su implementación interna
permanecen ocultos del mundo exterior.
3. Reutilización de código: si ya existe un objeto (tal vez escrito por otro desarrollador de software), puede usar ese
objeto en su programa. Esto permite a los especialistas implementar / probar / depurar objetos complejos
específicos de tareas, en los que puede confiar para ejecutar en su propio código.
4. Facilidad de conexión y depuración: si un objeto en particular resulta problemático, simplemente puede eliminarlo
de su aplicación y enchufar un objeto diferente como su reemplazo. Esto es análogo a la solución de problemas
mecánicos en el mundo real. Si se rompe un perno, que sustituya que , no toda la máquina.

¿Qué es una clase?

Una clase es un modelo o prototipo a partir del cual se crean los objetos. Esta sección define una clase que modela el
estado y el comportamiento de un objeto del mundo real. Se enfoca intencionalmente en lo básico, mostrando cómo
incluso una clase simple puede modelar limpiamente el estado y el comportamiento.

En el mundo real, a menudo encontrarás muchos objetos individuales, todos del mismo tipo. Puede haber miles de otras
bicicletas en existencia, todas de la misma marca y modelo. Cada bicicleta se construyó con el mismo conjunto de
planos y, por lo tanto, contiene los mismos componentes. En términos orientados a objetos, decimos que su bicicleta es
una instancia de la clase de objetos conocidos como bicicletas. Una clase es el plano a partir del cual se crean los objetos
individuales.

La siguiente Bicycle clase es una posible implementación de una bicicleta:

bicicleta de clase {

cadencia int = 0;
int velocidad = 0;
int gear = 1;

void changeCadence (int newValue) {


cadencia = newValue;
}
void changeGear (int newValue) {
gear = newValue;
}

vacío SpeedUp (int incremento) {


velocidad = velocidad + incremento;
}

vole applyBrakes (int decrement) {


velocidad = velocidad - disminución;
}

vacío printStates () {
System.out.println ("cadencia:" +
cadencia + "velocidad:" +
velocidad + "marcha:" + marcha);
}
}

La sintaxis del lenguaje de programación Java le parecerá nueva, pero el diseño de esta clase se basa en la discusión
previa de los objetos de bicicleta. Los campos cadence, speed y gearre presentan el estado del objeto, y los métodos
( changeCadence, changeGear, speedUpetc.) definen su interacción con el mundo exterior.

Es posible que haya notado que la Bicycleclase no contiene un mainmétodo. Eso es porque no es una aplicación
completa; Es solo el modelo para las bicicletas que podrían usarse en una aplicación. La responsabilidad de crear y usar
nuevos Bicycleobjetos pertenece a alguna otra clase en su aplicación.

Aquí hay una BicycleDemo clase que crea dos Bicycleobjetos separados e invoca sus métodos:

clase BicycleDemo {
public static void main (String [] args) {

// Crea dos diferentes


// objetos de bicicleta
Bicicleta bike1 = bicicleta nueva ();
Bicicleta bike2 = bicicleta nueva ();

// Invocar métodos en
// esos objetos
bike1.changeCadence (50);
bike1.speedUp (10);
bike1.changeGear (2);
bike1.printStates ();

bike2.changeCadence (50);
bike2.speedUp (10);
bike2.changeGear (2);
bike2.changeCadence (40);
bike2.speedUp (10);
bike2.changeGear (3);
bike2.printStates ();
}
}
El resultado de esta prueba imprime la cadencia, la velocidad y la marcha del pedal final para las dos bicicletas:

cadencia: 50 velocidad: 10 marcha: 2


cadencia: 40 velocidad: 20 marcha: 3
¿Qué es la herencia?

La herencia proporciona un mecanismo poderoso y natural para organizar y estructurar su software. Esta sección explica
cómo las clases heredan el estado y el comportamiento de sus superclases, y explica cómo derivar una clase de otra
utilizando la sintaxis simple proporcionada por el lenguaje de programación Java.

Los diferentes tipos de objetos a menudo tienen una cierta cantidad en común entre sí. Las bicicletas de montaña, las
bicicletas de carretera y las bicicletas tándem, por ejemplo, comparten las características de las bicicletas (velocidad
actual, cadencia actual de los pedales, equipo actual). Sin embargo, cada uno también define características adicionales
que los hacen diferentes: las bicicletas tándem tienen dos asientos y dos juegos de manubrios; las bicicletas de carretera
tienen manillares de caída; Algunas bicicletas de montaña tienen un anillo de cadena adicional, lo que les da una relación
de transmisión más baja.

La programación orientada a objetos permite que las clases hereden el estado y el comportamiento comúnmente
utilizados de otras clases. En este ejemplo, Bicyclese convierte ahora en
la superclase de MountainBike, RoadBikey TandemBike. En el lenguaje de programación Java, cada clase puede tener una
superclase directa, y cada superclase tiene el potencial para un número ilimitado de subclases :

Una jerarquía de clases de bicicleta.

La sintaxis para crear una subclase es simple. Al comienzo de su declaración de clase, use la extendspalabra clave,
seguida del nombre de la clase para heredar de:

clase MountainBike extiende bicicleta {

// nuevos campos y métodos que definen


// una bicicleta de montaña iría aquí

Esto proporciona MountainBikelos mismos campos y métodos que Bicycle, sin embargo, permite que su código se centre
exclusivamente en las características que lo hacen único. Esto hace que el código de sus subclases sea fácil de leer. Sin
embargo, debe tener cuidado de documentar adecuadamente el estado y el comportamiento que define cada superclase,
ya que ese código no aparecerá en el archivo fuente de cada subclase.
¿Qué es una interfaz?

Una interfaz es un contrato entre una clase y el mundo exterior. Cuando una clase implementa una interfaz, promete
proporcionar el comportamiento publicado por esa interfaz. Esta sección define una interfaz simple y explica los cambios
necesarios para cualquier clase que la implemente.

Como ya has aprendido, los objetos definen su interacción con el mundo exterior a través de los métodos que
exponen. Los métodos forman la interfaz del objeto con el mundo exterior; Los botones en la parte frontal de su televisor,
por ejemplo, son la interfaz entre usted y el cableado eléctrico en el otro lado de su carcasa de plástico.  Presiona el botón
de "encendido" para encender y apagar el televisor.

En su forma más común, una interfaz es un grupo de métodos relacionados con cuerpos vacíos. El comportamiento de
una bicicleta, si se especifica como una interfaz, puede aparecer de la siguiente manera:

interfaz de bicicleta {

// revoluciones de rueda por minuto


anular changeCadence (int newValue);

void changeGear (int newValue);

vacío SpeedUp (int incremento);

vole applyBrakes (int decrement);


}

Para implementar esta interfaz, el nombre de su clase cambiaría (a una marca particular de bicicleta, por ejemplo,
como ACMEBicycle), y usaría la implementspalabra clave en la declaración de clase:

clase ACMEBicycle implementa Bicicleta {

cadencia int = 0;
int velocidad = 0;
int gear = 1;

// El compilador ahora requerirá esos métodos


// changeCadence, changeGear, speedUp y applyBrakes
// todos se implementarán. La compilación fallará si esos
// faltan métodos de esta clase.

void changeCadence (int newValue) {


cadencia = newValue;
}

void changeGear (int newValue) {


gear = newValue;
}

vacío SpeedUp (int incremento) {


velocidad = velocidad + incremento;
}

vole applyBrakes (int decrement) {


velocidad = velocidad - disminución;
}

vacío printStates () {
System.out.println ("cadencia:" +
cadencia + "velocidad:" +
velocidad + "marcha:" + marcha);
}
}

La implementación de una interfaz permite que una clase se vuelva más formal sobre el comportamiento que promete
proporcionar. Las interfaces forman un contrato entre la clase y el mundo exterior, y el compilador hace cumplir este
contrato en el momento de la construcción. Si su clase afirma implementar una interfaz, todos los métodos definidos por
esa interfaz deben aparecer en su código fuente antes de que la clase se compile correctamente.

Nota:  Para compilar realmente la ACMEBicycleclase, deberá agregar la publicpalabra clave al comienzo de los métodos
de interfaz implementados. Aprenderá las razones para esto más adelante en las lecciones sobre Clases y
Objetos e Interfaces y Herencia

¿Qué es un paquete?

Colocar su código en paquetes hace que los grandes proyectos de software sean más fáciles de administrar. Esta
sección explica por qué esto es útil y le presenta la Interfaz de programación de aplicaciones (API) proporcionada por la
plataforma Java.

Un paquete es un espacio de nombres que organiza un conjunto de clases e interfaces relacionadas de manera
lógica. Conceptualmente, puede pensar que los paquetes son similares a las diferentes carpetas de su
computadora. Puede mantener páginas HTML en una carpeta, imágenes en otra y scripts o aplicaciones en otra.  Debido a
que el software escrito en el lenguaje de programación Java puede estar compuesto por cientos o miles de clases
individuales, tiene sentido mantener las cosas organizadas colocando clases e interfaces relacionadas en paquetes.

La plataforma Java proporciona una enorme biblioteca de clases (un conjunto de paquetes) adecuada para usar en sus
propias aplicaciones. Esta biblioteca se conoce como la "Interfaz de programación de aplicaciones" o "API" para
abreviar. Sus paquetes representan las tareas más comúnmente asociadas con la programación de propósito
general. Por ejemplo, un Stringobjeto contiene estado y comportamiento para cadenas de caracteres; un Fileobjeto
permite que un programador cree, elimine, inspeccione, compare o modifique fácilmente un archivo en el sistema de
archivos; unaSocketobjeto permite la creación y uso de sockets de red; Varios objetos GUI controlan botones y casillas de
verificación y cualquier otra cosa relacionada con las interfaces gráficas de usuario. Hay literalmente miles de clases
para elegir. Esto le permite a usted, el programador, enfocarse en el diseño de su aplicación particular, en lugar de la
infraestructura requerida para que funcione.

La especificación API de la plataforma Java contiene la lista completa de todos los paquetes, interfaces, clases, campos
y métodos suministrados por la plataforma Java SE. Cargue la página en su navegador y márquela. Como programador,
se convertirá en su pieza de documentación de referencia más importante.

Preguntas

1. Los objetos del mundo real contienen estado y comportamiento.


2. El estado de un objeto de software se almacena en campos.
3. El comportamiento de un objeto de software se expone a través de métodos.
4. Ocultar datos internos del mundo exterior y acceder a ellos solo a través de métodos expuestos públicamente se
conoce como encapsulamiento.
5. Un plano para un objeto de software se llama clase.
6. El comportamiento común puede definirse en una superclase y heredarse en una subclase usando la palabra
clave extend.
7. Una colección de métodos sin implementación se llama interfaz.
8. Un espacio de nombres que organiza clases e interfaces por funcionalidad se llama paquete.
9. El término API significa ? Interfaz de programación de aplicaciones

Ejercicios

1. Cree nuevas clases para cada objeto del mundo real que observó al comienzo de este sendero. Consulte la clase
de bicicletas si olvida la sintaxis requerida.

ventilador de clase {

int color=0;
int marca=0;

void changeVelocidad (int newValue){


velocidad = newValue;
}

void changeTemperatura (int newValue){


temperatura = newValue;
}

2. Para cada nueva clase que haya creado anteriormente, cree una interfaz que defina su comportamiento, luego
requiera que su clase la implemente. Omita uno o dos métodos e intente compilar. ¿Cómo se ve el error?

También podría gustarte