PDF de programación - Programación II - Introducción

Imágen de pdf Programación II - Introducción

Programación II - Introduccióngráfica de visualizaciones

Publicado el 3 de Diciembre del 2018
733 visualizaciones desde el 3 de Diciembre del 2018
511,0 KB
8 paginas
Creado hace 14a (01/02/2010)
Programación II

Introducción

Ángel Lucas González Martínez

Jaime Ramírez
Jaime Ramírez
Guillermo Román

DLSIIS. Facultad de Informática
Universidad Politécnica de Madrid

1

Ilusión de Simplicidad

Introducción

2

1

Objetivo de la asignatura

• Aprender técnicas y conocimientos para el desarrollo de

programas/sistemas grandes (> 10Kloc)
programas/sistemas grandes (> 10Kloc)

• Dos problemas:

– El cerebro no es capaz de manejar tanta información

simultáneamente por lo que se necesitan procesos y herramientas
cognitivas

– Además, los programas monolíticos no ayudan a desarrollar un

b
buen software

ft

• La solución pasa por organizar y estructurar tanto el

conocimiento como los programas

Introducción

3

Abstracción

• La palabra clave es

ABSTRACCIÓN
ABSTRACCIÓN

es decir, no detenerse en los detalles hasta que no sea
necesario

• La abstracción es la herramienta cognitiva principal, que

nos permite abordar problemas enormes

• Por ejemplo, para conocer el número de alumnos que hay

en una clase una persona los contaría, lo visualizamos
en una clase una persona los contaría, lo visualizamos
como el “cardinal de un conjunto”, o “número de
elementos de una lista”, obviando los detalles de cada uno
de los alumnos

Introducción

4

2

Modelizar

• Otro concepto esencial es

MODELIZAR
MODELIZAR

consiste en representar el mundo real (el universo del
discurso) en un determinado lenguaje

• Los puntos claves en el proceso de modelización son:

– Entender el problema con un nivel de abstracción adecuado: ¿Qué

es lo importante? ¿Qué detalles no interesan?

– Necesitamos un lenguaje adecuado para representar el modelo en

función del nivel de abstracción

– Representar la solución con un nivel de abstracción adecuado
d

l d

b

d

• La capacidad de modelizar y abstraer se adquiere con la

l

l

i

i

i

experiencia.

• Misma realidad + distintos problemas ⇒ Mod. Diferentes

Introducción

Arquitectura: orden y estructura

• Observemos la siguientes clasificaciones de las piezas de

un automóvil:
un automóvil:

de plástico
de metal
de porcelana
de cristal
telas
etc.


bloque motor
carburador
encendido
chasis
interior
etc.

volante
cuadro
palanca
elevalunas
climatizador
etc.

• ¿Cuál nos gusta más? ¿Por qué?
• ¿Seríamos capaces de identificar a qué se dedican las
personas que hicieron las clasificaciones anteriores?
• Fueron un chatarrero, un ingeniero y un conductor.

Introducción

5

7

3

Ingeniería del Software

• La ingeniería del software busca:

– Eficiencia para construir nuevos sistemas
Eficiencia para construir nuevos sistemas
– Efectividad a la hora de resolver los problemas
– Poder reutilizar y aprovechar esfuerzos realizados
– Facilitar el crecimiento gradual y controlado de los sistemas

desarrollados

– Facilitar el mantenimiento del software realizado
– No ser “rehenes” de las personas que realizaron el software

• La solución:
• La solución:

– Compartimentar la solución
– Separar lo genérico (más reutilizable) de lo específico
– Documentar y especificar

Introducción

9

Cohesión y Acoplamiento

• La compartimentación depende del problema ... “a un

chatarrero no le vale de nada la estructuración del
ingeniero”

• La cohesión y el acoplamiento son dos conceptos

esenciales para la correcta organización del software

• La cohesión habla del grado de relación (similitud) que
existe entre los elementos de un mismo compartimento

• El acoplamiento habla del grado de relación (dependencia)

que existe entre compartimentos diferentes
q

p

• Los objetivos a perseguir son:

Maximizar la cohesión

Minimizar el acoplamiento

Introducción

10

4

Módulos

• Supongamos que tenemos un programa que compartimentar


¿Cómo lo estructuraríamos?
¿Cómo lo estructuraríamos?
– Clasificación alfabética por la primera letra del identificador
– Por un lado las operaciones de entrada/salida, por otro los elementos

básicos definidos (tipos), por otro las operaciones de tratamiento de esos
datos, por otro la miscelánea, etc.

– Se empaqueta cada tipo con las operaciones que trabajan sobre ellos

• Cualquier lenguaje de programación mínimamente aceptable permite

compartimentar el código en módulos.
– Ada es un lenguaje que permite la utilización de módulos (paquetes).
)
– Java es un lenguaje que permite la utilización de dos tipos de módulos: clases y

ió d

ód l

Ad

(

i

l

ili

l

j

paquetes.

Introducción

11

Necesidad de ocultación

En Ada 95:
package Fecha is
Ti


bt

i P iti

subtype Tipo_Día is Positive range 1 .. 31;
1 31
subtype Tipo_Mes is Positive range 1 .. 12;
subtype Tipo_Año is Positive range 1950 .. 2100;
type Tipo_Fecha is record

Día : Tipo_Día;
Mes : Tipo_Mes;
Año : Tipo_Año;

end record;

Posibles Puntos de
acoplamiento

procedure Crear Fecha (Día : in Tipo Día; Mes : in Tipo Mes;
procedure Crear_Fecha (Día : in Tipo_Día; Mes : in Tipo_Mes;

Año : in Tipo_Año; Fecha : out

Tipo_Fecha);

function darDía (Fecha : Tipo_Fecha) return Tipo_Día;
-- etc.
end Fecha;

Introducción

12

5

Necesidad de ocultación

En Java:
public class FechaPublico{
public class FechaPublico{

public int dia;
public int mes;
public int anio;

Posibles Puntos de
acoplamiento

public FechaPublico(int dia, int mes, int anio) {
………
}
public int darDia() {
………
}
}}
• ¿Qué puede hacer un programa cliente con este paquete?
• ¿Cuáles son los puntos de acoplamiento? ¿Qué debería quedar

oculto?

Introducción

13

Necesidad de ocultación

d

i

Puntos de acoplamiento
P

public class TestFechaPublica {
public static void main(String[] args) {//MAIN
Fecha.FechaPublico fecha1;
Fecha FechaPublico fecha1;
l
try {
fecha1 = new Fecha.FechaPublico(30, 5, 2005);
System.out.println("La primera fecha es " +fecha1);
fecha1.mes =2; //se crea una fecha incorrecta!!
System.out.println("La primera fecha es " + fecha1);
//Se produce una excepción
fecha1 = new Fecha FechaPublico(30 2 2005);
fecha1 = new Fecha.FechaPublico(30, 2, 2005);
} catch (Fecha.FechaIncorrecta e) {
e.printStackTrace();
} }//MAIN
}

Introducción

14

6

Un poco de terminología

• Un código ya existente se dice que ofrece unos

servicios
servicios

• El programa que lo usa se dice que es un cliente
• Los mecanismos de ocultación1 de los lenguajes

hacen que los programas clientes conozcan sólo la
interfaz (los servicios). De esta forma se abstraen
los detalles de implementación
Sin embargo, para usar correctamente un código el
• Sin embargo para usar correctamente un código el
programador debe conocer qué hace dicho código
y el coste. Para ello, junto al interfaz debe
aparecer una explicación de lo que dicho código
hace.

(1) http://es.wikipedia.org/wiki/Ocultaci%C3%B3n_de_informaci%C3%B3n

Introducción

15

Ocultación

p

• Las ventajas de la ocultación son:
– permite minimizar el acoplamiento,
,
– permite abstraerse de los detalles,
– independencia de la implementación,
– muy importante, reusabilidad

p

• Los lenguajes de programación ofrecen mecanismos para
ocultar e impedir a los clientes el uso de ciertos elementos
de nuestro código

• ¿Cómo se instrumenta la ocultación y qué ofrecen los

l
j ?
lenguajes?

• Los módulos tienen dos partes bien diferenciadas :

– Una parte pública o interfaz (specification en Ada).
– Una parte privada o implementación (body en Ada).

Introducción

16

7

Otros conceptos importantes

• Sobrecarga
• Genéricos o plantillas
• Herencia/Polimorfismo
• Legibilidad: convenios de nombres de identificadores
• Eficiencia: orden de complejidad
• etc
etc.

Introducción

17

8
  • Links de descarga
http://lwp-l.com/pdf14401

Comentarios de: Programación II - Introducción (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