Técnicas de Escritura de Códigos: TAD Tecnología de Objetos Raúl Herrera A.
Como hacer software Orientado a objetos La construcción de software orientado a objetos es el método de desarrollo de software que basa la arquitectura de cualquier sistema en módulos deducidos a partir de los tipos de objetos que manipula (en lugar de basarse en la función o funciones que el sistema está destinado a asegurar). No pregunte primero qué hace el sistema, pregunte a qué se lo hace
Descripción adecuada de objetos Ser precisa y no ambigüa Ser completa No debe especificar más de lo necesario
Tipos Abstractos de Datos (TAD) Los Tipos de Datos Abstractos (TDA's) cumplen las tres caracteristicas anteriores Una especificación de tipo abstracto de datos consta de cuatro secciones: TIPOS, FUNCIONES, AXIOMAS y PRE-CONDICIONES. Un  tipo  es una colección de objetos caracterizados por funciones, axiomas y precondiciones. En la sección de  funciones  se enumeran las operaciones aplicables a las instancias del TDA  Una función de un conjunto de origen X a un conjunto resultado Y es  parcial  si no está definida para todos los miembros de X. Una función que no es parcial, es  total .  Las funciones parciales reflejan restricciones de implementación.  Hay 3 tipos de funciones: consultas, órdenes y constructores. Las funciones se traducen en atributos y rutinas.  Los axiomas definen el comportamiento propio del TAD Postcondiciones :Cláusulas que deben ser verdaderas después de ejecutar los axiomas de un TAD Precondiciones:  Cualquier especificación de un TAD que incluya funciones parciales debe especificar el dominio de cada una de ellas
Clases Una  clase  es un TAD más una implementación posiblemente parcial.  Una clase que está completamente implementada se denomina  efectiva . Una clase que está implementada sólo parcialmente, o que no está implementada, se dice que es  diferida . Para obtener una clase efectiva se deben dar todos los detalles de implementación.  Por lo tanto, un TAD es una clase diferida.  Al implementar un TAD se obtiene una clase efectiva. Una clase efectiva consta de tres elementos:  E1. La especificación del TDA. E2. La selección de una representación. E3. Una correspondencia de las funciones de E1 con subrutinas de E2.
Clases (2) La implementación es el proceso de pasar de una clase diferida a una clase efectiva. Los objetos entonces, tendrían forma de iceberg:
Objetos y Clases Todo  objeto  es una instancia de alguna  clase . Hay dos formas de utilizar una clase:  heredar  de ella, o ser un  cliente  de ella.  Sea P una clase. Una clase C que contenga una declaración de la forma P a; se dice que es un  cliente  de P. Entonces, P es un  proveedor  de C.  La  herencia  relaciona dos clases de manera jerárquica. Ésta permite que los descendientes de una clase hereden todas las variables y métodos de sus ascendentes, además de crear los suyos propios. A los descendientes se les llama  subclases . Al padre inmediato se le llama  superclase .
Objetos y Clases (2) super  se refiere a la clase superior o superclase. Se puede usar tanto para atributos como para métodos (super es similar a this).  Ejemplo: class Punto  { int x,y;    Punto(int x, int y)   { this.x = x; this.y = y;   } . . . } class Punto3D  extends  Punto {  int z;  Punto3D(int x, int y, int z) { this.x = x;  this.y = y; this.z = z; } Punto3D() { this(-1,-1,-1); } }
Clases y Objetos (3) Por defecto, todos los métodos y variables de instancia se pueden sobre-escribir. Si no se desea que un método o variable pueda ser sobre-escrito, se puede declarar como final. La declaración final también sirve para declarar "constantes". Por ejemplo: final int VERDADERO = 1;  Java permite declarar como final tanto variables como métodos (en C++ no existe el concepto de final para métodos).  No se debe confundir final con el método finalize. Este último es un método que se puede agregar a cualquier clase para que sea llamado justo antes de que el recolector de basura reclame el objeto. Es útil para liberar recursos que no son propios de Java, como por ejemplo un descriptor de archivo o un tipo de letra de Windows.
Clases y Objetos (4) Si se quieren usar métodos fuera del contexto de cualquier instancia de objeto, se utiliza en Java la cláusula static (por ejemplo en el main). No se puede aquí usar this ni super.  Cuando se carga la clase por primera vez, se ejecutan todos los  static , una sola vez. Los métodos y variables estáticas pueden ser referenciados desde otras clases utilizando el nombre de la clase que los contiene.  Una clase puede "obligar" a las clases que heredan de ella a que implementen algún método particular. Para hacer esto, la clase debe usar la cláusula abstract.  Estos métodos que deben ser implementados en las clases herederas, se conocen con el nombre de  métodos responsabilidad de la clase .

8. técnicas de escritura de códigos

  • 1.
    Técnicas de Escriturade Códigos: TAD Tecnología de Objetos Raúl Herrera A.
  • 2.
    Como hacer softwareOrientado a objetos La construcción de software orientado a objetos es el método de desarrollo de software que basa la arquitectura de cualquier sistema en módulos deducidos a partir de los tipos de objetos que manipula (en lugar de basarse en la función o funciones que el sistema está destinado a asegurar). No pregunte primero qué hace el sistema, pregunte a qué se lo hace
  • 3.
    Descripción adecuada deobjetos Ser precisa y no ambigüa Ser completa No debe especificar más de lo necesario
  • 4.
    Tipos Abstractos deDatos (TAD) Los Tipos de Datos Abstractos (TDA's) cumplen las tres caracteristicas anteriores Una especificación de tipo abstracto de datos consta de cuatro secciones: TIPOS, FUNCIONES, AXIOMAS y PRE-CONDICIONES. Un tipo es una colección de objetos caracterizados por funciones, axiomas y precondiciones. En la sección de funciones se enumeran las operaciones aplicables a las instancias del TDA Una función de un conjunto de origen X a un conjunto resultado Y es parcial si no está definida para todos los miembros de X. Una función que no es parcial, es total . Las funciones parciales reflejan restricciones de implementación. Hay 3 tipos de funciones: consultas, órdenes y constructores. Las funciones se traducen en atributos y rutinas. Los axiomas definen el comportamiento propio del TAD Postcondiciones :Cláusulas que deben ser verdaderas después de ejecutar los axiomas de un TAD Precondiciones: Cualquier especificación de un TAD que incluya funciones parciales debe especificar el dominio de cada una de ellas
  • 5.
    Clases Una clase es un TAD más una implementación posiblemente parcial. Una clase que está completamente implementada se denomina efectiva . Una clase que está implementada sólo parcialmente, o que no está implementada, se dice que es diferida . Para obtener una clase efectiva se deben dar todos los detalles de implementación. Por lo tanto, un TAD es una clase diferida. Al implementar un TAD se obtiene una clase efectiva. Una clase efectiva consta de tres elementos: E1. La especificación del TDA. E2. La selección de una representación. E3. Una correspondencia de las funciones de E1 con subrutinas de E2.
  • 6.
    Clases (2) Laimplementación es el proceso de pasar de una clase diferida a una clase efectiva. Los objetos entonces, tendrían forma de iceberg:
  • 7.
    Objetos y ClasesTodo objeto es una instancia de alguna clase . Hay dos formas de utilizar una clase: heredar de ella, o ser un cliente de ella. Sea P una clase. Una clase C que contenga una declaración de la forma P a; se dice que es un cliente de P. Entonces, P es un proveedor de C. La herencia relaciona dos clases de manera jerárquica. Ésta permite que los descendientes de una clase hereden todas las variables y métodos de sus ascendentes, además de crear los suyos propios. A los descendientes se les llama subclases . Al padre inmediato se le llama superclase .
  • 8.
    Objetos y Clases(2) super se refiere a la clase superior o superclase. Se puede usar tanto para atributos como para métodos (super es similar a this). Ejemplo: class Punto { int x,y; Punto(int x, int y) { this.x = x; this.y = y; } . . . } class Punto3D extends Punto { int z; Punto3D(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } Punto3D() { this(-1,-1,-1); } }
  • 9.
    Clases y Objetos(3) Por defecto, todos los métodos y variables de instancia se pueden sobre-escribir. Si no se desea que un método o variable pueda ser sobre-escrito, se puede declarar como final. La declaración final también sirve para declarar "constantes". Por ejemplo: final int VERDADERO = 1; Java permite declarar como final tanto variables como métodos (en C++ no existe el concepto de final para métodos). No se debe confundir final con el método finalize. Este último es un método que se puede agregar a cualquier clase para que sea llamado justo antes de que el recolector de basura reclame el objeto. Es útil para liberar recursos que no son propios de Java, como por ejemplo un descriptor de archivo o un tipo de letra de Windows.
  • 10.
    Clases y Objetos(4) Si se quieren usar métodos fuera del contexto de cualquier instancia de objeto, se utiliza en Java la cláusula static (por ejemplo en el main). No se puede aquí usar this ni super. Cuando se carga la clase por primera vez, se ejecutan todos los static , una sola vez. Los métodos y variables estáticas pueden ser referenciados desde otras clases utilizando el nombre de la clase que los contiene. Una clase puede "obligar" a las clases que heredan de ella a que implementen algún método particular. Para hacer esto, la clase debe usar la cláusula abstract. Estos métodos que deben ser implementados en las clases herederas, se conocen con el nombre de métodos responsabilidad de la clase .