PDF de programación - Parte I: Programación en Ada - 3. Modularidad y programación orientada a objetos

Imágen de pdf Parte I: Programación en Ada - 3. Modularidad y programación orientada a objetos

Parte I: Programación en Ada - 3. Modularidad y programación orientada a objetosgráfica de visualizaciones

Publicado el 6 de Junio del 2017
1.295 visualizaciones desde el 6 de Junio del 2017
359,2 KB
31 paginas
Creado hace 15a (16/10/2008)
Parte I: Programación en Ada

UNIVERSIDAD DE CANTABRIA

1. Introducción a los computadores y su programación
2. Elementos básicos del lenguaje
3. Modularidad y programación orientada a objetos
4. Estructuras de datos dinámicas
5. Tratamiento de errores
6. Abstracción de tipos mediante unidades genéricas
7. Entrada/salida con ficheros
8. Herencia y polimorfismo
9. Programación concurrente y de tiempo real

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

1

3.1. Diseño modular y
orientado a objetos

UNIVERSIDAD DE CANTABRIA

El diseño modular es una técnica que viene usándose desde
hace mucho tiempo.

El problema es cómo partir en módulos independientes
• antes solía hacerse de acuerdo a criterios funcionales

(agrupar funciones similares)

Librería de
Gráficos

Estructuras de

Datos

Operaciones de
Operaciones de

Dibujar
Dibujar

Operaciones de
Modificación

...

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

2

Partición con criterios
funcionales

UNIVERSIDAD DE CANTABRIA

Inconvenientes
• Cada figura (objeto del espacio problema) reside en varios

módulos de programa
- por tanto estos módulos no son independientes

• Un cambio en el objeto del espacio problema implica

cambiar muchos módulos, y volverlos a probar

• Añadir nueva funcionalidad implica normalmente tocar

varios módulos, y volverlos a probar
- por ejemplo, añadir una figura nueva.

• En definitiva, el software es difícil de cambiar o extender y

poco reutilizable

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

3

Diseño Orientado a Objetos

UNIVERSIDAD DE CANTABRIA

Se puede utilizar otra aproximación a la partición en módulos:
• división orientada a objetos
• cada objeto del problema real que es preciso resolver es un

módulo del programa

• se encapsulan juntas la definición del objeto y todas sus

operaciones

El diseño de programas orientado a objetos pretende:
• simplificar la modificación y extensión del software,

haciendo que la mayor parte del mismo sea reutilizable
• además es más fácil de entender ya que existe relación
directa entre la estructura del software y la del problema

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

4

Ejemplo de diseño orientado a
objetos

UNIVERSIDAD DE CANTABRIA

Librería de
Librería de
Gráficos
Gráficos

Línea recta y
Línea recta y
sus operaciones
sus operaciones

Rectángulo y sus
Rectángulo y sus

operaciones
operaciones

Círculo y sus
Círculo y sus
operaciones
operaciones

...

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

5

Ventajas

UNIVERSIDAD DE CANTABRIA

Si el diseño es orientado al objeto:
• el cambio interno en un objeto afecta a un solo módulo
• en muchos casos, extender la funcionalidad no implica
modificar el software existente, sino sólo añadir nuevos
objetos

• el software es más reutilizable

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

6

3.2. Concepto de clase y objeto

UNIVERSIDAD DE CANTABRIA

Un objeto es un elemento de programa que se caracteriza por:
• atributos o campos: son datos contenidos en el objeto, y

que determinan su estado

• operaciones o métodos: son operaciones con las que
podemos solicitar información del objeto, o modificarla
- Están compuestas por secuencias de instrucciones que

operan con los atributos, y que pueden invocar
operaciones de otros objetos

Una clase representa una definición de un módulo de
programa, a partir de la cual se pueden crear muchos objetos
• Cada uno de estos objetos es una instancia de la clase

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

7

Concepto de clase y objeto
(cont.)

UNIVERSIDAD DE CANTABRIA

Se intenta siempre corresponder
los objetos de un programa con
objetos del problema que éste
resuelve.

Ejemplo: mostrar uno o varios
gráficos de funciones de una
variable.

Los gráficos representan una
clase de objetos.

Gráfico

Título
Puntos (X,Y) del gráfico
Número de puntos
Títulos de los ejes

Crear un gráfico nuevo
Añadir un punto
Pintar el gráfico
Poner el título

Cada gráfica individual
representa un objeto de la clase
“Gráfico”.

atributos

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

operaciones

8

Ejemplo

UNIVERSIDAD DE CANTABRIA

with Plot_Windows; use Plot_Windows;

procedure Experimento is
Plot : Plot_Window_Type:=
Plot_Window("Experimento","Tiempo (s)","Temperatura (C)");
begin
Set_Graph_Title(Plot,"Exp. 7");
-- Anadir los puntos
Add_Point(Plot,0.0,20.4);
Add_Point(Plot,1.0,23.2);
Add_Point(Plot,2.0,24.8);
Add_Point(Plot,3.0,25.7);
Add_Point(Plot,4.0,26.1);
Add_Point(Plot,5.0,26.5);
-- Pintar el gráfico
Wait(Plot);
end Experimento;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

9

3.2. Paquetes Ada

UNIVERSIDAD DE CANTABRIA

Motivación:
• Encapsular juntas declaraciones de constantes, tipos y

subprogramas

• Programación orientada a objetos: encapsulamiento de

clases con especificación de una interfaz visible, y
ocultando los detalles internos

Los paquetes Ada tienen dos partes:
• parte visible o especificación

- a su vez, tiene una parte no visible o privada

• cuerpo, con los detalles internos

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

10

Declaración de paquetes

UNIVERSIDAD DE CANTABRIA

Se ponen en la parte de declaraciones de un programa (o en
un fichero aparte como veremos más adelante)

Especificación

package Nombre is

declaraciones de datos y tipos;
declaraciones de tipos y constantes privadas;

declaraciones de cabeceras de subprogramas;
declaraciones de especificaciones de paquetes;
private
otras declaraciones necesarias más abajo;
declaraciones completas de los tipos y constantes privados
end Nombre;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

11

Declaración de paquetes
(cont.)

UNIVERSIDAD DE CANTABRIA

Cuerpo

package body Nombre is

declaraciones de datos y subprogramas;
declaraciones de subprogramas y paquetes de la
especificación;
begin
instrucciones de inicialización;
end Nombre;

Las instrucciones de inicialización
• se ejecutan una sóla vez antes de que se use el paquete
• son opcionales (junto a su begin)
• sirven para inicializar variables declaradas en el paquete

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

12

Uso de un paquete

UNIVERSIDAD DE CANTABRIA

Uso de objetos de la parte visible de un paquete:
Paquete.objeto

Con cláusula use se puede usar el objeto directamente
use Paquete;

Con una cláusula use type se pueden usar los operadores de
un tipo directamente
use type Paquete.Tipo;

• Si no se hace, los operadores se tendrían que usar como

funciones:

c:=Paquete."+"(a,b); -- en lugar de c:=a+b;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

13

Ejemplo: Números complejos

UNIVERSIDAD DE CANTABRIA

package Complejos is

type Complejo is private;

function Haz_Complejo (Re,Im : Float) return Complejo;

function Real(C : Complejo) return Float;
function Imag(C : Complejo) return Float;

function "+" (C1,C2 : Complejo) return Complejo;

function Image(C : Complejo) return String;

private

type Complejo is record
Re,Im : Float;
end record;

end Complejos;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

14

Ejemplo (cont.)

package body Complejos is

UNIVERSIDAD DE CANTABRIA

function "+" (C1,C2 : Complejo) return Complejo is
begin
return (C1.Re+C2.Re,C1.Im+C2.Im);
end "+";

function Haz_Complejo (Re,Im : Float) return Complejo is
begin
return (Re,Im);
end Haz_Complejo;

function Imag (C : Complejo) return Float is
begin
return C.Im;
end Imag;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

15

Ejemplo (cont.)

UNIVERSIDAD DE CANTABRIA

function Image (C : Complejo) return String is
begin
if C.Im>=0.0 then
return Float’Image(C.Re)&" + "&Float’Image(C.Im)&" J";
else
return Float’Image(C.Re)&" - "&Float’Image(abs C.Im)&" J";
end if;
end Image;

function Real (C : Complejo) return Float is
begin
return C.Re;
end Real;

end Complejos;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

16

Ejemplo de uso

with Complejos, Ada.Text_IO;
use Ada.Text_IO;
use type Complejos.Complejo;

UNIVERSIDAD DE CANTABRIA

procedure Prueba_Complejos is
C1,C2,C3 : Complejos.Complejo;
begin
C1:=Complejos.Haz_Complejo(3.0,4.0);
C2:=Complejos.Haz_Complejo(5.0,-6.0);
Put_Line("C1="&Complejos.Image(C1));
Put_Line("C2="&Complejos.Image(C2));
C3:=C1+C2;
Put_Line("Parte real C3="&Float’Image(Complejos.Real(C3)));
Put_Line("Parte imag C3="&Float’Image(Complejos.Imag(C3)));
end Prueba_Complejos;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

16/oct/08

17

3.3. Compilación separada

UNIVERSIDAD DE CANTABRIA

En Ada se pueden compilar separadamente:
• subprogramas
• especificaciones de paquetes
• cuerpos de paquetes

Cada uno de ellos se llama “unidad de librería”

Para usar una unidad compilada separadamente se debe usar
una cláusula with.

El orden de compilación, en algunos compiladores, es
importante. En Gnat no
  • Links de descarga
http://lwp-l.com/pdf4324

Comentarios de: Parte I: Programación en Ada - 3. Modularidad y programación orientada a objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad