Clases y objetos

Clases

En la programación orientada a objetos, el modelado de la realidad se realiza a partir de clases. Las clases son modelos o abstracciones de la realidad que representan un elemento de un conjunto de objetos como aviones, animales, personas, autos, computadoras, ecuaciones, figuras geométricas, elementos de una interfaz gráfica, archivos, etc.

Cada objeto debe ser responsable de su propio comportamiento; para ello, cada objeto contiene información o atributos (que se conforman con el estado del objeto) y tiene una serie de métodos utilizados para interactuar con él llamados métodos: obtener información, modificar el estado del objeto, etc. Los métodos se invocan a partir de llamadas a procedimientos.

El modelado que se hace de la información y del comportamiento de los miembros de la clase se hace dentro del dominio del problema, es decir, sólo se incluyen las partes de son relevantes para poder resolver el problema planteado. Esto se conoce como principio de abstracción.

Por ejemplo, suponiendo que deseas modelar una computadora que se encuentra en la escuela, te interesaría conocer atributos como el número de serie, marca, procesador, el sistema operativo que tiene instalado, cuanta memoria tiene, su ubicación en un aula. Así como qué acciones (métodos) puedes hacer con la computadora: encender la computadora, ejecutar algún programa, almacenar archivos, terminar de usar un programa, apagar la computadora. Para ello, utilizaremos una lista de características divididas en tres secciones: nombre o identificador de la clase, una sección donde se listan los atributos y una última sección donde se listan los métodos:

Computadora Identificador de la clase
  • número de serie
  • marca
  • procesador
  • sistema operativo
  • memoria
  • aula
Atributos
  • encender computadora
  • ejecutar programa
  • almacenar archivo
  • cerrar programa
  • apagar computadora
Métodos

Siguiendo algunas reglas o convenciones de programación (en el lenguaje Java) se pueden usar letras, dígitos de números y el símbolo de guión bajo “_” para formarlos y no se pueden usar espacios ni otros caracteres, incluidos acentos o tildes. Las mayúsculas y las minúsculas son dos símbolos distintos así “ecuacion”, “Ecuacion”, “eCuaCiOn” y “ECUACION” son identificadores distintos. Como no puedes utilizar espacios en los identificadores o nombres de las variables se utiliza una técnica que se llama capitalización, que consiste en que si un identificador tiene más de una palabra (como “ejecutar archivo” o “ecuación de segundo grado”), el identificador se escribiría con mayúscula y la primera letra de cada palabra empezaría con mayúscula (“EjecutarArchivo” o “EcuacionDeSegundoGrado”). Adicionalmente, en Java se utiliza la siguiente nomenclatura, que puede utilizarse en los diagramas de clase. Sigue esta nomenclatura y podrás identificar rápidamente a qué se refiere cada identificador, aún sin conocer completamente la estructura de la clase.

  • Clases: van capitalizadas e inician con mayúsculas. Se recomienda redactarlo con un sustantivo en singular.
  • Atributos: van capitalizados e inician con minúscula.
  • Métodos: van capitalizados e inician con minúscula y se incluyen paréntesis al finalizar “()”. Se recomienda redactarlos con un verbo en infinitivo.
  • Los métodos y atributos no incluyen el nombre de la clase, por ejemplo, si la clase es “Computadora” no se agrega un atributo “memoriaDeLaComputadora” ni un método “encenderComputadora”, ya que es evidente que son elementos de “Computadora”; en su lugar hay que usar simplemente “memoria” y “encender()”.

Siguiendo la convención anterior, la clase “Computadora” quedaría de la siguiente forma, observa que ya no hay espacios en los identificadores, si cada elemento inicia con mayúscula o mayúscula, que las palabras están capitalizadas, se eliminaron términos redundantes y que se agregaron paréntesis al final de los nombres de los métodos. Las tres secciones (identificador de la clase, atributos y métodos) van separados por una línea para su fácil identificación.

Computadora Identificador de la clase
  • numeroDeSerie
  • marca
  • procesador
  • sistemaOperativo
  • memoria
  • aula
Atributos
  • encender()
  • ejecutarPrograma()
  • almacenaArchivo()
  • cerrarPrograma()
  • apagar()
Métodos

Utilizando el principio de encapsulamiento y con la intención de mantener la integridad del estado del objeto, los atributos se mantienen privados u ocultos a los programadores, y sólo pueden accederse a través de los métodos de la clase.

Si tuvieras una cuenta bancaria, probablemente te gustaría poder modificar el saldo de la cuenta para asignarte un monto mayor de recursos sin que quede rastro (saldo$1,000,000), pero no te gustaría que alguien modificara el saldo y que te quitaran tu dinero y quedaras a deberle al banco. Así, sólo podrás modificar el saldo a través de depositar(), retirar() o pagar(); y al modificar el saldo quedará registrado quién y cuándo se hizo el movimiento.

Cuenta
  • nombre
  • nCuenta
  • saldo
  • abrir()
  • depositar()
  • retirar()
  • pagar()
  • cerrar()
Con los siguientes ejercicios verificarás si aprendiste a identificar atributos y métodos dentro del dominio de un problema.
Escribir

Escribe la respuesta correcta en los espacios en blanco ¿Qué atributos y métodos podrías identificar para modelar a un estudiante inscrito en una escuela? Al finalizar recibiras posibles respuestas cómo retroalimentación.

Nombre de la clase:

Alumno
Es la característica de estar inscrito, aunque podrías utilizar Estudiante o Persona, pero no da exactamente el término esperado. Cuando se investiga sobre los términos utilizados dentro del dominio del problema puede usarse un mejor identificador que el planteado originalmente.

Atributos de la clase:

Pertinentes al problema, podría ser: su nombre, sus apellidos, fecha de nacimiento, sexo, contraseña de ingreso al sistema, etc.
Probablemente no sea necesario incluir cuestiones como religión o si es fan de algún equipo de fútbol. Mantén las cosas lo más simples que se puedan.

Métodos asociados a los miembros de la clase:

Dentro del sistema pueden incluirse: inscribir al alumno, dar de baja, cambiarlo de grupo, aprobarlo o reprobarlo, etc.
Probablemente no sea necesario incluir cuestiones como religión o si es fan de algún equipo de futbol. Mantén las cosas lo más simples que se puedan.

Con base en lo anterior, el diagrama de clase puede ser:

Alumno
  • nombre
  • numeroDeCuenta
  • grupo
  • contraseña
  • fechaDeNacimiento
  • inscribir()
  • darDeBaja()
  • cambiarDeGrupo()
  • aprobar()
  • reprobar()

Objetos

Las clases son abstracciones que describen un conjunto de objetos. Son plantillas o modelos abstractos que nos indican la información que almacenan los individuos o instancias de dicha clase. Si piensas en las computadoras y tienes varias copias cada una es una “instancia” o un objeto.

  • numeroDeSerie LN001
  • marca Lo Nuevo
  • procesador e5
  • sistemaOperativo Ventanas
  • memoria 8 GB
  • aula W-06
  • numeroDeSerie LN002
  • marca Lo Nuevo
  • procesador e5
  • sistemaOperativo Ventanas
  • memoria 8 GB
  • aula CC1-01
  • numeroDeSerie PA123
  • marca Pineapple
  • procesador e7
  • sistemaOperativo MaxOS
  • memoria 16 GB
  • aula W-06
  • numeroDeSerie X001
  • marca ISM
  • procesador ppc3
  • sistemaOperativo Ventanas
  • memoria 4 GB
  • aula Z-08
  • numeroDeSerie PA456
  • marca Pineapple
  • procesador e5
  • sistemaOperativo MaxOS
  • memoria 8 GB
  • aula G1
  • numeroDeSerie 001
  • marca Pineapple
  • procesador e7
  • sistemaOperativo MaxOS
  • memoria 8 GB
  • aula CC1-01

Cada objeto tiene su estado de atributos y a todos se les pueden aplicar los métodos: encender(), ejecutarPrograma, almacenarArchivo(), cerrarPrograma() o apagar(); porque todos los objetos son miembros de la clase Computadora.

En la siguiente pantalla revisaremos el diagrama de clases básico.