Fundamentos Esenciales de la Programación Orientada a Objetos y Diseño de Software
Clasificado en Informática
Escrito el en
español con un tamaño de 3,53 KB
Principios Fundamentales de Diseño y POO
A continuación, se presentan conceptos esenciales sobre la Programación Orientada a Objetos (POO), el diseño de software y el lenguaje C++.
Principios de Diseño de Software
- La independencia funcional (o *alta cohesión*) implica interfaces sencillas, donde cada módulo tiene una función determinante y muestra aversión a interactuar excesivamente con otros módulos. Esto permite que, mientras se trabaja con un módulo, se puedan olvidar los detalles del resto.
- La Ley de Deméter para clases y métodos dice que en cualquier método M de una clase C solo se pueden utilizar los métodos definidos en la propia clase C, en alguna de las clases pasadas como argumentos a M, en alguna de las clases de los objetos globales o en las clases de los objetos creados dentro de M.
- La Ley de Deméter para objetos y mensajes (forma débil) dice que, dentro de cualquier método M, se puede acceder directamente o enviar mensajes a las variables globales o locales a M.
- El mejor tipo de acoplamiento para la mantenibilidad de un programa es el de *datos*. El acoplamiento de estampado es generalmente menos deseable.
Conceptos Centrales de la Programación Orientada a Objetos (POO)
- La generalización define clases que juntas conforman la definición de un solo objeto (relación de *herencia* o *es-un*).
- Un lenguaje de programación *puro* se caracteriza porque todo es un objeto de una clase y todas las clases heredan de una clase base.
- Los términos centrales en la POO son objeto, clase y herencia.
- La encapsulación es un mecanismo que permite separar de forma estricta interfaz e implementación.
- La interpretación de un mismo mensaje puede variar en función del receptor del mismo y/o del tipo de información adicional que lo acompaña (concepto conocido como *polimorfismo* o *despacho dinámico*).
Modelado y Estándares
- UML (Lenguaje Unificado de Modelado) es un estándar para especificar el análisis y diseño del software.
- El diagrama de actividad modela procesos, lógica condicional y concurrencia.
Especificidades de C++ y Gestión de Objetos
- El constructor de copia se invoca automáticamente durante la *inicialización* de un objeto a partir de otro (por ejemplo, al pasar un objeto por valor o en una declaración con el operador igual).
- Es posible definir un constructor de copia invocando en su cuerpo al operador de asignación. (Esta práctica requiere un manejo cuidadoso de recursos).
- Las funciones miembro constantes pueden ser utilizadas con objetos constantes.
Manejo de Atributos y Métodos de Clase (Static)
- Las variables de clase (miembros estáticos) en C++ deben inicializarse fuera del ámbito de la clase para reservarles memoria.
- Un método de clase (método estático) es una operación que accede exclusivamente a atributos de clase.
- Un atributo de clase público puede ser accedido desde fuera de la clase a través de un objeto de la clase, un puntero o referencia al mismo, o mediante el nombre de la clase seguido del operador de ámbito (
::).