Ir al contenido principal

Clases y Objetos


Las Clases y los Objetos son los conceptos más importantes que hay que entender en la programación orientada a objetos. El paradigma orientado a objetos se basa en la abstracción del mundo real para dar solución a los problemas con aplicaciones software. 


Imagine que se desea controlar el arranque y nivel de velocidad de diversos autos de carrera. Estos autos de carrera pueden existir en diversos ambientes: reales o virtuales. Si fuera un ambiente real, en donde existieran físicamente los autos, entonces se podría diseñar e implementar una aplicación software para controlar los dispositivos de arranque y velocidad de cada auto. De lo contrario, si fuera un ambiente virtual, en donde no existieran físicamente los autos, se podría diseñar e implementar una aplicación software para simular el arranque y velocidad de cada auto.

Por tanto, en base al paradigma orientado a objetos podemos diseñar e implementar la aplicación software abstrayendo del mundo real o del contexto de problema las cosas o conceptos necesarios o relevantes que sirvan para solucionar el problema. En consecuencia, las cosas o conceptos abstraídos del mundo real van a representar las Clases principales de la aplicación software. Entonces, del caso que se desea controlar el arranque y nivel de velocidad de diversos autos de carrera, la cosa o concepto abstraído más relevante resulta ser la Clase Auto y además tiene atributos o propiedades como la cantidad de combustible y el nivel de velocidad que van a servir para controlar su movimiento a través de diferentes funciones u operaciones que puede realizar como arrancar, acelerar y frenar. Así, la Clase Auto encapsula sus atributos y operaciones que lo caracterizan y va a representar a cualquier auto que se necesite controlar desde la aplicación software. Por otra parte, los Objetos autos son instancias creadas a partir de la Clase Auto, es decir, cada Objeto auto instanciado va a conservar los mismos atributos definidos en la Clase Auto pero con valores propios que definen su estado. Por ejemplo, puede existir un Objeto auto1 donde el estado o valor de su atributo velocidad sea 0, es decir el auto1 está detenido y otro Objeto auto2 donde el estado o valor de su atributo velocidad sea 50, es decir el auto2 está en movimiento. Tanto el auto1 como el auto2 son Objetos de la Clase Auto (también se puede decir que auto1 y auto2 son del tipo Auto) y por tanto podrán realizar las mismas operaciones de arrancar, acelerar y frenar.

Existen también otros tipos de Clases que no se abstraen tan naturalmente del mundo real o contexto de problema. Estas Clases se crean por propia iniciativa del diseñador o programador orientado a objetos para poder completar la aplicación software, a esta técnica se le conoce como fabricación pura y es considerado un patrón de diseño básico. Entonces, como parte de la fabricación pura en el caso de los autos, es necesario también crear una Clase adicional llamada ControladorDeAutos. Esta nueva Clase permitirá controlar la carrera de un Objeto auto, es decir, solicitará al Objeto auto que arranque, que acelere y finalmente que se detenga.

En conclusión, una aplicación software desarrollado en base al paradigma orientado a objetos es un programa diseñado principalmente por un conjunto de Clases abstraídas del mundo real (conocidas como clases del dominio) y por otro conjunto de Clases de fabricación pura, en donde todas ellas se encuentran relacionadas y se colaboran.

Estos conceptos fueron extraídos del libro texto "Introducción a la programación orientada a objetos con Java" del cual soy autor.

Comentarios

Entradas populares de este blog

Manejo de fechas en Java 8 con LocalDate

En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java 8: la clase  java.time.Period  que sirve para determinar rangos como el total de años entre dos fechas, la clase  java.time.format.DateTimeFormatter  que sirve para dar diversos formatos a la fecha, y principalmente la clase  java.time. LocalDate   que es un objeto de fecha y hora inmutable que representa una fecha, a menudo visto como año-mes-día, además permite realizar de forma simple diversas operaciones de fecha.

Calendario en Java con GregorianCalendar

En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java: la clase  java.util.Date  que sirve para crear una fecha actual del sistema, la clase  java.text.DateFormat  que sirve para dar formato a la fecha, y principalmente la clase  java.util. GregorianCalendar   que sirve para manipular fechas.

Formato de fechas en Java con SimpleDateFormat

En el programa desarrollado y mostrado en esta oportunidad, se han usado dos clases de la biblioteca de Java: la clase  java.util.Date  que sirve para crear una fecha actual del sistema, y la clase  java.text.SimpleDateFormat  que sirve para dar diversos formatos de impresión a la fecha.