Duda en relación al diseño de tablas para aplicaciones en las que se utiliza POO y técnicas de herencia. Parto de la base de que las estructuras de datos están definidas en una base de datos relacional como puede ser MySQL, Access, etc. y no en una base de datos orientada a objetos. Supongamos un breve ejemplo para poder llegar a la cuestión: Se quiere realizar una aplicación para gestionar un club de fútbol donde se deberá almacenar información de varias personas: Jugadores, Técnicos (Entrenadores, Preparadores Físicos, etc.), Árbitros, Directivos y Socios. Se empieza diseñando una Clase Persona que contenga las propiedades típicas: Nombre, Apellido1, Apellido2, Fecha de Nacimiento, Sexo, etc. Y los métodos habituales (Leer, Añadir, Modificar, Borrar) Acto seguido se diseñan una serie de Clases para cada uno de los tipos de personas que vamos a utilizar en la aplicación heredando, todas ellas, las propiedades de la clase Persona e implementado nuevas propiedades específicas de la clase, por ejemplo: Jugadores: Propiedades Nuevas: Demarcación, Equipo Técnicos: Propiedades Nuevas: Titulación, Función Etc. Bien, aquí viene la duda sobre el diseño, ¿Cómo es más correcto definir las tablas de la base de datos?: Caso 1: Se diseña una única tabla que tiene todos los datos posibles de una persona y según en la clase en la que se abre esta tabla se rellenan unas u otras propiedades. Caso 2: Se diseña una tabla de personas con los campos correspondientes a las propiedades de la clase persona. Se diseña una tabla para cada una de las nuevas clases hijas de la clase persona y que tienen una relación de uno a uno con la clase persona. Es evidente que ambas soluciones presentan cada una distintas ventajas e inconvenientes, sin embargo el elegir un sistema u otro condiciona todas la programación posterior que se produzca sobre todo en el apartado de acceso a datos. Me interesa saber si existe una regla concreta para elegir un diseño u otro. Esta mismo problema se volverá a producir cuando estemos en una aplicación de gestión donde tendremos una clase Documento que puede tener varias clases derivadas como Pedido, Albarán y Factura, es importante saber si la regla que se recomiende para el caso anterior es aplicable a cualquier diseño de clases o cada problema puede tener distintas implementaciones en base de datos (Caso 1 o 2) según sus características. Ventajas de 1 tabla: Sencillez en los accesos a tablas cuando se hagan las operaciones E/S tanto para modificar como para listar los registros. Desventajas Que pasa cuando en la aplicación una misma persona puede pertenecer a varias clases distintas, por ejemplo un caso en un Club, en el cual su presidente (clase Directivos) es socio del club (Clase Socios) y además portero del primer equipo (Clase Jugadores). Si sólo hay una tabla de personas de alguna manera tendremos que distinguir a que clase o clases pertenece una persona, existen varias posibilidades:
VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in
Programación Orientada a Objetos Tags:
Clases,
Objetos
Mediante el DOO se puede descomponer un sistema de software complejo en sistemas más pequeños y manejables, es decir en objetos. Definiendo OBJETO como una entidad tangible que muestra un comportamiento bien definido.
Definiciones según Grady Booch:
AOO
Es un método de análisis que examina las necesidades desde la perspectiva de las clases y los objetos encontrados en el vocabulario del dominio del problema.
DOO
Es un método de diseño que engloba el proceso de descomposición orientado a objetos y una notación para describir las partes lógica y física, estática y dinámica, de los modelos del sistema que se está diseñando.
POO
Es un método de implementación en el que se organizan los programas como una colección de objetos en cooperación, donde cada uno de los cuales representa un caso de alguna de las clases, y cuyas clases son todos los miembros de una jerarquía de clases unida a través de las relaciones de herencia.
VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in
Programación Orientada a Objetos
Definiciones
Objeto
Es un paquete desoftware que contiene una colección de datos y procedimientos relacionados.
En la POO los procedimientos se llaman MÉTODOS y los elementos de datos PROPIEDADES.
En sus PROPIEDADES se expresa todo lo que conoce un objeto y en sus MÉTODOS todo lo que puede hacer.
Cada objeto forma una unidad autocontenida e independiente.
Mensaje
Los objetos software interactúan entre si enviando mensajes que solicitan los métodos que puede realizar el objeto y establecen o devuelven propiedades. Un mensaje es, simplemente, el nombre del objeto seguido del nombre de uno de sus miembros.
El mensaje puede tener tres partes:
- Nombre del objeto
- Nombre del miembro (método o propiedad)
- Valores especificados por los argumentos del miembro
Ejemplo de mensaje de 3 partes:
Clasificacion.Competicion = “L98″
Ejemplo de mensaje de 2 partes:
Clasificacion.Visualizar
POO (Programación Orientada a Objetos)
Los programas Orientados a Objetos constan de un numero de objetos que interactúan entre si pasándose mensajes entre ellos.
Atributos fundamentales de la POO:
- Encapsulado, es el proceso de combinar datos y procedimientos encadenados lógicamente dentro de una clase/objeto.
- Abstracción, es el proceso de abstraer lógicamente los datos y procedimientos que están relacionados dentro de una misma clase.
- Polimorfismo, es un metodo individual que tiene el mismo nombre en distintos objetos y realiza la misma función, aunque su implementación dentro de cada objeto sea distinta.
- Herencia, es el proceso mediante el cual todas las subclases de una superclase pueden utilizar los miembros de esa superclase/objeto.
En Encapsulado y el Polimorfismo son el corazón de la POO.
Clase
Una clase especifica, de una sola vez, los miembros que pueden incluirse dentro de un tipo particular de objetos. Por ello, cada clase necesita contener sólo los valores particulares o la configuración, que diferencian esa clase de los objetos similares.
Una clase representa el comportamiento de un objeto y es independiente de su implementación.
La interfaz de una clase es el conjunto de propiedades y métodos que contiene.
Módulo
Grupos de Clases y Objetos. La creación de módulos hace sencillo representar un sistema complejo.
CARACTERÍSTICAS DE LA POO
ENCAPSULADO
El objeto es independiente, no contiene variables públicas ni globales y no necesita procedimientos externos para ejecutar su contenido.
Sólo se puede acceder y manejar los datos y el comportamiento de un objeto encapsulado a través de un interfaz público de objeto.
Un objeto encapsulado únicamente se puede comunicar con otro objeto, o con parte del programa, recibiendo y enviando mensajes.
Ventajas del Encapsulado:
- Protege los datos ante la corrupción que puedan causar otros objetos o partes del programa.
- Oculta los detalle de implentación compleja al resto del programa.
- Facilita la depuración y pruebas.
- Permite la reutilización de los objetos por otros programadores.
ABSTRACCIÓN
Abstracción significa separar el comportamiento de un objeto de su implementación.
Abstraer un objeto de la descripción de un sistema incluye construir una clase para la aplicación. Los demás objetos no pueden comunicarse ni interactuar directamente con la clase, sino que es necesario crear copias de la clase para permitir la interacción y la comunicación.
Ventajas de la Abstracción:
- Centrarse en las características esenciales de las clases abstraidas
- Ocultar los detalles de la implementación compleja.
- Fomentar la reutilización de las clases por otros programadores.
POLIMORFISMO
Posibilidad de ocultar los detalles de la implementación del método de un objeto tras un interface público común.
Ventajas del Polimorfismo:
- Simplificar el interface público de un objeto.
- Reduce el tamaño y aumenta la velocidad (?)
- Promocionar la reutilización del objeto por otros programadores
HERENCIA
La herencia permite definir una o más clases como casos especiales de una clase más general.
La clase más general se llama SuperClase, las clases definidas a partir de ellas se pueden llamar SubClases, ClasesDerivadas o Clases Hijas.
Una subclase puede utilizar todos los miembros de su SuperClase y definir sus propios miembros nuevos.
La herencia aumenta la eficiencia dentro de la SuperClase, porque sólo es necesario programar una vez el comportamiento o los métodos de grandes grupos de objetos.
Existen dos tipos de herencia: simple y múltiple.
Ventajas de la Herencia:
- Minimizar la programación redundante.
- Reducir el tamaño y optimizar la velocidad
- Aumentar la flexibilidad de la programación.
VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in
Programación Orientada a Objetos Tags:
Objetos