Está en la página 1de 142

Lenguajes de

programación
Lenguaje
(Diccionario de la lengua Española)
 1. m. Conjunto de sonidos articulados con que el hombre
manifiesta lo que piensa o siente.
 2. m. lengua (‖ sistema de comunicación verbal).
 3. m. Manera de expresarse. Lenguaje culto, grosero,
sencillo, técnico, forense, vulgar.
 4. m. Estilo y modo de hablar y escribir de cada persona en
particular.
 5. m. Uso del habla o facultad de hablar.
 6. m. Conjunto de señales que dan a entender algo. El
lenguaje de los ojos, el de las flores.
 7. m. Inform. Conjunto de signos y reglas que permite la
comunicación con un ordenador.
Lenguaje
 Edward Sapir, definió el lenguaje como un
método humano y no instintivo de
comunicar ideas, emociones y deseos
mediante un sistema de símbolos
producidos voluntariamente. Esta
definición en principio se refiere a un
lenguaje natural, que es aquel lenguaje
hablado o escrito que usamos para la
comunicación más cotidiana y general.

Lenguaje
 Un lenguaje formal es un lenguaje donde existe
una gramática que implementa el conjunto de
concatenaciones (cadenas) posibles de un
alfabeto finito particular. Esta gramática provee
al lenguaje de 3 elementos importantes:
 1. Un vocabulario de símbolos;
 2.Reglas sintácticas para combinar estos
símbolos en cadenas y fórmulas gramatical
mente correctas, y
 3. Reglas semánticas para darle significado e
interpretación a esas fórmulas
Programación
(Diccionario de la lengua Española)
 1. f. Acción y efecto de programar.
 2. f. Conjunto de los programas de radio o
televisión.
Programar
(Diccionario de la lengua Española)
 1. tr. Formar programas, previa declaración de lo que se
piensa hacer y anuncio de las partes de que se ha de
componer un acto o espectáculo o una serie de ellos.
 2. tr. Idear y ordenar las acciones necesarias para realizar un
proyecto. U. t. c. prnl.
 3. tr. Preparar ciertas máquinas por anticipado para que
empiecen a funcionar en el momento previsto.
 4. tr. Preparar los datos previos indispensables para obtener la
solución de un problema mediante una calculadora
electrónica.
 5. tr. Inform. Elaborar programas para la resolución de
problemas mediante ordenadores.
 6. tr. Mat. Optimar el valor de una función de muchas variables
cuyos valores extremos son conocidos.
Lenguajes de Programación
 Los lenguajes de programación forman un
subconjunto de los lenguajes formales.
Mediante ellos el ser humano puede
comunicarse con una computadora y decirle qué
es lo que tiene que hacer y, al mismo tiempo,
sirven para comunicarse con otros seres
humanos y expresarles qué es lo que se quiere
que haga una computadora.
Historia de los lenguajes
de programación
Breve...
Prehistoria
 Charles Babbage
 Construyó computadora
 Ada Lovelace
 Lenguaje para programar telares
II Guerra Mundial
 Alan Turing
 Máquinas de Turing
 Test de Turing
 ENIAC
 Programación por conmutadores
 John Von Neumann
 El programa almacenado
Primeros lenguajes
 Decada de los 40:
 Código de máquina
 Binario
 Códigos de operación
 Sumar 0001
 Restar 0010
 Más adelante: PNemónicos
Lenguajes de “alto nivel”
 Más próximos al lenguaje natural
 Los primeros (1955 ->)
 FORTRAN (Formula Translator)
 COBOL (Common Business Oriented Language)
 ALGOL (Algorithmic Language) (60s)
 Pascal, C, SmallTalk, Java
 LISP (List Procesor) (60s)
¿Cuándo aparecieron?
 Pascal 1970
 C 1972
 Prolog 1973
 SEQUEL 1975
 SQL 1992
 Visual Basic 1992
 Basic 1960
 Java 1996
Generación de los lenguajes de
programación
1GL: Código máquina
2GL: Ensambladores (código simbólico)
3GL: (Máquina independiente) Lenguajes
Imperativos(FORTRAN, Pascal, C ...)
4GL: Generadores de aplicación de dominio
específico
5GL: Lenguajes de Inteligencia artificial

Cada generación es un grado más alto de


abstracción
Niveles de lenguajes de programación

Lenguajes declarativos

Lenguajes de alto nivel

Lenguajes
ensambladores

Lenguajes de máquina
Contexto en el que se ubican los lenguajes de
programación
Lenguaje natural
Aplicación
Lenguaje de programación
Compilador/Intérprete
Máquina virtual
Sistema operativo

Lenguaje
de máquina
Una breve cronología
Early 1950s “order codes” (primitive assemblers)
1957 FORTRAN the first high-level programming language
1958 ALGOL the first modern, imperative language
1960 LISP, COBOL Interactive programming; business programming
1962 APL, SIMULA the birth of OOP (SIMULA)
1964 BASIC, PL/I
1966 ISWIM first modern functional language (a proposal)
1970 Prolog logic programming is born
1972 C the systems programming language
1975 Pascal, Scheme two teaching languages
1978 CSP Concurrency matures
1978 FP Backus’ proposal
1983 Smalltalk-80, Ada OOP is reinvented
1984 Standard ML FP becomes mainstream (?)
1986 C++, Eiffel OOP is reinvented (again)
1988 CLOS, Oberon, Mathematica
1990 Haskell FP is reinvented
1990s Perl, Python, Ruby, JavaScript Scripting languages become mainstream
1995 Java OOP is reinvented for the internet
2000 C#
Cronología
Paradigma
(Diccionario de la lengua Española)
 1. m. Ejemplo o ejemplar.
 2. m. Ling. Cada uno de los esquemas formales
en que se organizan las palabras nominales y
verbales para sus respectivas flexiones.
 3. m. Ling. Conjunto cuyos elementos pueden
aparecer alternativamente en algún contexto
especificado; p. ej., niño, hombre, perro, pueden
figurar en El -- se queja.
Paradigma
(Webster)
 1: example, pattern; especially : an outstandingly
clear or typical example or archetype

 2: an example of a conjugation or declension


showing a word in all its inflectional forms

 3: a philosophical and theoretical framework of a


scientific school or discipline within which theories,
laws, and generalizations and the experiments
performed in support of them are formulated;
broadly : a philosophical or theoretical framework of
any kind
Paradigma
(Webster)
 1: ejemplo, patrón; especialmente : un típico o claro
ejemplo o arquetipo

 2: un ejemplo de conjugación o declinación que


muestra una palabra en todas sus formas flexivas

 3: un marco filosófico y teórico de una escuela


científica o disciplina dentro de la cual las teorías ,
leyes, y generalizaciones y los experimentos
realizados en apoyo de esos que se formulan ; en
general : un marco filosófico o teórico de algún tipo
Paradigma
(Ejemplos de Paradigma)
 Su reciente libro nos ofrece un nuevo paradigma
para la biografía moderna.

 El paradigma Freudiano del psicoanálisis

 Un nuevo estudio que cuestiona el actual


paradigma de la evolución
Paradigma
 Un paradigma está constituido por los supuestos
teóricos generales, leyes y técnicas.
 Existen principios que guían el trabajo dentro del
paradigma.
 Todos los paradigmas, además, contienen
principios metodológicos.
Paradigmas de Programación
 Representa un enfoque particular o filosofía para la construcción del
software.
 No es mejor uno que otro sino que cada uno tiene ventajas y desventajas y
hay situaciones donde un paradigma resulta más apropiado que otro.
 Ejemplos de paradigmas de programación:
 El paradigma imperativo es considerado el más común y está representado, por
ejemplo, por lenguajes como C, Pascal, y Fortran.
 El paradigma funcional está representado por la familia de lenguajes LISP, en
particular Scheme.
 El paradigma lógico, un ejemplo es Prolog.
 El paradigma orientado a objetos. Lenguajes completamente orientado a objetos
como Smalltalk, Eiffel y Java. C++ es un ejemplo de lenguaje híbrido.
 El paradigma guiada por eventos. Ejemplo de ello es Java.
 El paradigma concurrente/paralelo. Algunos lenguajes que lo soportan son
Java, HPF (High Perfomance Fortran) Pascal Concurrente y Occam.
Paradigmas de programación (I)

• Programación imperativa
• Programación funcional
• Programación lógica
• Programación estructurada
• Programación orientada a objetos
• Programación concurrente
• Programación guiada por eventos
Paradigmas de programación (II)
Programación imperativa
El programa se define como una serie de acciones o pasos, cada uno de
los cuales recibe una entrada, ejecuta un cálculo, o produce como
resultado una salida. La programación imperativa se basa en la asignación
de valores, en la utilización de variables para almacenar valores y en la
realización de operaciones con estos valores almacenados. Ejemplos de
lenguajes de programación imperativa son los lenguajes de alto nivel
(Fortran, C, Pascal, etc.) y los lenguajes ensambladores.

Programación funcional f(x) = x + 3;


Los programas están formados por una colección de definiciones de
funciones. Las funciones interactúan entre sí utilizando condicionales,
recursividad y composición funcional. Ejemplos de lenguajes de
programación funcional son Lisp y Scheme.
Paradigmas de programación (III)
Programación lógica
Un lenguaje de programación lógica es un tipo de lenguaje declarativo, en
el cual el programa está formado por un conjunto de declaraciones lógicas
(predicados, hechos). La ejecución de un programa consiste en aplicar
estas declaraciones para obtener todas las soluciones posibles a un
problema. El ejemplo clásico de lenguaje de programación lógica es
Prolog.

Programación orientada a objetos


El programa es una colección de objetos que interactúan entre sí a través
del paso de mensajes, los cuales comúnmente transforman el estado de
los objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk,
C++, Eiffel y Java.
Paradigmas de programación (IV)
Programación concurrente
La programación se basa en la ejecución simultánea de procesos, ya sea
en una misma computadora con uno o varios procesadores, que en un
cluster de computadoras. El programa se define como una colección de
procesos cooperativos y asíncronos. Ejemplos de lenguajes concurrentes
son Linda y Fortran de alto rendimiento.

Programación guiada/orientada por eventos


El programa responde a eventos externos generados en un orden no
predecible. Los eventos comúnmente se generan a partir de acciones del
usuario en la pantalla (por ejemplo, clics del mouse o pulsaciones de
teclas), pudiendo existir también otras fuentes generadoras de eventos.
Ejemplos de lenguajes de programación guida por eventos son Visual
Basic y Java.
Paradigmas de programación
 Lenguajes imperativos
 Programa: serie de pasos
 Un cálculo, una entrada o una salida
 Condicionales, bucles y secuencias

 Cobol, Fortran, C
Paradigmas de programación
 Orientado a objetos
 Programa: colección de objetos
 Objetos interactúan entre sí
 Smalltalk, Java, C++, C#, Javascript
Paradigmas de programación
 Programación Lógica
 Programa: declaraciones lógicas
 Falso o verdadero
 Backtracking
 Prolog
 Guiada por eventos
 Programa: ciclo de respuesta a eventos
 Evento: suceso generado por el entorno
 Visual Basic, Java, C#, Delphi, Pascal, Javascript
Paradigmas de programación
 Programación funcional
 Programa: colección de funciones
 Funciones matemáticas: dominio y contradominio
 Interactúan entre sí
 Condicionales, recursividad, composición funcional
 Lisp, Scheme
Paradigmas de programación
 Programación Lógica
 Programa: declaraciones lógicas
 Falso o verdadero
 Backtracking
 Prolog
Paradigmas de programación
 Guiada por eventos
 Programa: ciclo de respuesta a eventos
 Evento: suceso generado por el entorno
 Visual Basic, Java, Javascript
Paradigmas de programación
 Programación concurrente
 Programa: colección de procesos cooperativos
 Comparten información y recursos
 Simulación por computadora
 Sistemas operativos
 GPSS, Java, SQL
Estrategias de construcción de
programas

Programación Descendente

Programación Modular

Programación Estructurada

Programación Orientada a Objetos


Programación Descendente
 La programación descendente
QuickSort o "Top - Down" es el proceso
mediante el cual un problema
se descompone en una serie
de niveles o pasos sucesivos
Particionar
de refinamiento (stepwise).

Intercambiar
Programación modular

La filosofía subyacente de la programación modular es la


descomposición del programa en módulos independientes,
cada uno de los cuales ejecuta una única actividad o función.
Cada módulo se analiza, se diseña, se codifica y se verifica por
separado
La descomposición de un módulo en submódulos continúa
hasta que se llegue a un punto en que el módulo resultante
tenga sólo una tarea específica que ejecutar (lectura, salida de
resultados, procesamiento de datos o control de otros
módulos).
Estrategias de construcción de programas

Módulo
principal

Módulo 1 Módulo 2 Módulo 3 ... Módulo N

Módulo 11 Módulo 12 Módulo 31 Módulo 32 Módulo N1 Módulo N2

Módulo 311 Módulo 312


Programación modular

Ejemplo de descomposición de un programa en módulos:


programa para el cálculo de estadísticas descriptivas

Cálculo de
estadísticas

Lectura de Cálculo de Cálculo de


medidas de Generación de Generación de
datos medidas de tablas gráficos
tendencia dispersión
central resumen
Programación estructurada
La programación estructurada es un conjunto de técnicas que
incorporan:

Diseño modular

Diseño descendente (top-down)

Estructuras de control básico:


secuencia, selección e iteración
Programación Orientado a Objetos (POO).

- Los seres humanos perciben el mundo como si estuviera formado por


objetos: mesas, sillas, computadoras, coches, cuentas bancarias, etc.
Donde conciente o inconscientemente tienden a organizarlos, clasificarlos,
relacionarlos entre si, y hasta extraen las características más importantes
dependiendo de lo que quieren hacer con ellas.
Figura

Vehículo

Animal
Programación Orientado a Objetos
(POO).
Clase
Generalmente, una clase se puede definir como una descripción
abstracta de un grupo de objetos, cada uno de los cuales tiene una
serie de atributos, un estado específico y es capaz de realizar una
serie de operaciones.

Lavadora
marca
 Atributos modelo
 Operaciones capacidad...
 Comportamiento Programar
PonerRopa
CerrarPuerta
Lavar
Programación Orientado a Objetos
(POO).
 Objetos:
Un objeto, no es más que una instancia de una clase. La instancia
de una clase significa definir un objeto dándole valores a sus
atributos y comportamiento, y realizando operaciones permitidas por
la clase.

ID:Lavadora
 Valores de los atributos
 Estado marca=“Lapava”
 Identidad capacidad=5
estado=enjuagando
Programación Orientada
a Objetos
Introducción a la Programación Orientado a Objetos
(POO).

 Significado de Orientado a Objetos


-El significado de Orientado a Objetos nace como un conjunto de
practicas que definen un estilo de programación.

- Los seres humanos perciben el mundo como si estuviera formado


por objetos: mesas, sillas, computadoras, coches, cuentas
bancarias, etc. Donde conciente o inconscientemente tienden a
organizarlos, clasificarlos, relacionarlos entre si, y hasta extraen las
características más importantes dependiendo de lo que quieren
hacer con ellas.
Programación Orientada a Objetos
 Definición:
La POO es un estilo de programación, donde todos los elementos
que forman parte del problema se conciben como objetos,
definiendo cuales son sus atributos y comportamiento, como se
relacionan entre sí y como están organizadas.

Estructura Interna de un Objeto:

Atributos: Define el estado del objeto

Métodos: Define el comportamiento del objeto


Programación Orientada a
Objetos (POO)
● La programación orientada a objetos trata de
amoldarse al modo de pensar del hombre y no
al de la máquina.
● Esto es posible gracias a la forma racional con
la que se manejan las abstracciones que
representan las entidades del dominio del
problema, y a propiedades como la jerarquía o
el encapsulamiento.
Ventajas de la POO
 Proximidad de los conceptos modelados
respecto a objetos del mundo real
 Facilita la reutilización de código
 Y por tanto el mantenimiento del mismo
 Se pueden usar conceptos comunes durante las
fases de análisis, diseño e implementación
 Disipa las barreras entre el qué y el cómo
Desventajas de la POO
 Mayor complejidad a la hora de entender el flujo
de datos
 Pérdida de linealidad
 Requiere de un lenguaje de modelización de
problemas más elaborado:
 Unified Modelling Language (UML)
 Representaciones gráficas más complicadas
¿Qué es un Objeto?

 Definición Formal (Rumbaugh):


 “Un objeto es un concepto, abstracción o cosa con un
significado y límites claros en el problema en cuestión”
 Un objeto posee (Booch):
 Estado
 Comportamiento
 Identidad
Objeto
 Un objeto es una abstracción de una
entidad del mundo real.
 Toda interacción con el mundo externo es
por medio de una interfase.

52
Objeto
Un objeto
tiene:
•Un estado
•Un comporta-
miento bien
definido
•Una identidad
única
53
Ejemplos de Objetos
Equipo 1 Equipo 2 Equipo 3 Equipo 4 Equi

Nombre: Nombre: Nombre: Nombre: Nombre


Televisor Televisor Televisor Televisor Televiso
Atributos: Atributos: Atributos: Atributos: Atributo
TamañoPantalla: CalidadVideo: TipoPantalla CalidadVideo TamañoP
Tamaño Base: CantidadBotones: ColorTelevisor CantidadCables Resolució
Material: CalidadAudio TiposDeEntrada CantidadEntradasS Modelo
CantidadEntradas eñal TiposBoton
PotenciaSo
TieneConexiónInter CalidadSonido
net:

Actividades: Actividades: Actividades: Actividades: Activida


ReproducirContenidoW Apagar PonerSubtitulos ReproducirArchivosMult reproducirS
eb Prender CambiarIdioma imedia isión
ReproducirContenidoAl SubirVolumen VincularDispositivo Reproducir
CambiarCanal
macenado BajarVolumen CompartirPantalla ultimedia
EmitirVideoTercero ConectarDispositivos CambiarBrillo Prender
InteracturarConDisposit Apagar
ivos
Ejemplos de Objetos
Equipo 6 Equipo 7 Equipo 1 Equipo 2 Equip
Nombre: Nombre: Nombre: Nombre: Nombre
Cajero Cajero Cajero Cajero Cajero
Atributos: Atributos: Atributos: Atributos: Atributo
Tamaño TamañoPäntalla TipoTeclado TipoPantalla TamañoBo
TamañoPantalla TiempoRespuesta TieneConexionRed CantidadBotones TamañoAlm
TamañoTeclas TieneReconocimientoH Tamaño TieneSistemaSeguridad TieneCone
CAlidadSonido uella
Colorres
Material CantidadDinero NombreEm
TipoMaterial TieneImpresora
TieneConexionElectrici
dad

Actividades: Actividades: Actividades: Actividades: Activida


RetirarDinero RecibeDinero TraferenciaBancaria ImpresionResibos Almacenar
DepositarDinero EntregaDinero PagoServicios TransferenciaEfectivo TransferirD
PagarServicios GestionaPagos Retirar VisualizarCantidadDine SacarDiner
ConsultarCuentas ConsultaSaldo Depositar ro AccederCu
ObtenerRecibos ImpresionRecibos ConsultarSaldo Retiro ChecarCue
ImpresiónEstados Deposito
Ejemplos de Objetos
Equipo 6 Equipo 7 Equipo 4 Equipo 5 Equ

Nombre: Nombre: Nombre: Nombre: Nombre


Video Video Video Video Video
Atributos: Atributos: Atributos: Atributos: Atributo
CalidadImagen CalidadSonido NumeroFPS ColorVide
CalidadSonido CalidadImagen NumeroF
TiempoRespuesta TiempoRespuesta
CalidadIm
DiseñoConsexiones
Colores CalidadS
NumeroPixeles Cantidad
TiempoFrames
CantidadFrames

Actividades: Actividades: Actividades: Actividades: Activida


ReproducirVideo ReproducirAudiio ReproducirVideo Reproduc
RecibirSeñal RepoducirImagen ReproducirAudio SubirVolu
TransmitirInformacion IluminarPantalla
BajarVolu
MonstrarImagenes ReproducirInformacion
ReproducirSonidos Reproduc
Las clases y los objetos están en todas partes

Figura N
Fi
Vehículo
A
Pe
Ar

A
Co
Re
De
Animal Ob
Ob
Di
El mundo color de Objetos

 ¿Por qué Orientación a Objetos (OO)?


 Se parece más al mundo real
 Permite representar modelos complejos
 Muy apropiada para aplicaciones de negocios
 Las empresas ahora sí aceptan la OO
 Las nuevas plataformas de desarrollo la han adoptado
(Java / .NET)
Un objeto posee Estado
 Lo que el objeto sabe
 El estado de un objeto es una de las posibles
condiciones en que el objeto puede existir
 El estado normalmente cambia en el transcurso
del tiempo
 El estado de un objeto es implementado por un
conjunto de propiedades (atributos), además de
las conexiones que puede tener con otros
objetos
Estado
 El estado de un objeto se compone de todas las
propiedades de un objeto (estáticas)
 Y los valores asociados a ellas (dinámicos).
 Estos valores pueden ser:
 Simples
 O denotar a otro objeto.
 Estado = Atributos = Datos del Objeto

60
Atributos
 Concepto: Características que definen a la
clase, es lo que el usuario (de la clase) puede
ver. Es la abstracción.
 Otro concepto: variables que están dentro de los
objetos y que contienen los valores del objeto.
 También son llamados: propiedades, datos
miembro.

 Atributos = Variables
61
Atributos – Ejemplo1
 Una Fracción está definido por un par de
números naturales, los cuales se denominan el
numerador y denominador.

numerador_
Fraccion denominador

ValorNumerador
ValorDenominador

62
Atributos – Ejemplo2
 Un Fecha está definido por tres datos: día, mes
y año.

Fecha
15/ 12/ 2005
Día
Mes
Año

63
Un objeto posee Comportamiento
 Lo que el objeto puede hacer
 El comportamiento de un objeto determina cómo
éste actúa y reacciona frente a las peticiones de
otros objetos
 Es modelado por un conjunto de mensajes a los
que el objeto puede responder (operaciones que
puede realizar)
 Se implementa mediante métodos
Comportamiento
 El comportamiento de un objeto es la forma en que
actúa y reacciona, en términos de sus cambios de
estado e intercambio de mensajes con otros objetos.
 El comportamiento de un objeto está determinado por
las operaciones que pueden ser invocadas sobre el
mismo.
 Los tres tipos de operaciones más comunes son:
 Construir
 Destruir

65
Métodos (Actividades)

 Concepto: Son las operaciones que se pueden


realizar con los objetos de la clase.
 Otro concepto: Son los procesos (funciones o
procedimientos) que permiten trabajar con los
datos de los objetos
 También son llamados: funciones miembro
 De acuerdo al trabajo que realizan los métodos,
estos se clasifican en:Constructores,destructores,
ponedores, selectores.

66
 ¿Qué objetos tienen relación con los siguientes
objetos?:
 Televisión:
 Cajero:
 Video:
 CPU: Teclado, Mouse, Pantalla, Alumno
 Mesa: Silla, Mantel, Plato, Vaso, Familia
Televisión
Equipo 1 Equipo 2 Equipo 3 Equipo 4
Control Control ControlRemoto Antena
Cable ReproductorDVD DispositivosBUleTooth Cable
DVD ConsolaVideoJuego ReproductorVideo Bocina
USB SeñalSatelital ConsolaVideoJuegos ControlRemoto
ConsolaVideoJuego Internet CapturadorPantalla Telefono
Persona Enchufe CableHDMI Persona
Mueble Electricidad CableRCA USB
Espectador CableVGA Modem
BocinaExterna CableEthernet Video
Antena Usuario TeatroCasa
Bocina
Televisor Decodificador
1
Antena
Control
TVBox

* * 1 4
Persona USB DVD Cable
Cajero
Equipo 5 Equipo 6 Equipo 1 Equipo 2

Dinero ControlREmoto Persona Usuario


Tarjeta Antena TarjetaCredito CuentaBancaria
Cliente Persona TarjetaDebito Ticket
AplicaciónMovil Base Dinero Enchufe
ConexionWifi Energia ConexionElectricidad Electricidad
ConexionElectricidad Enchufe Dinero
UnidadAlmacenamientoExterno TarjetaCredito
ReproductorVideo TarjetaDebito
BaseDatos
Computadora
Video
Equipo 3 Equipo 4 Equipo 5 Equipo 6
Televisor Computadora Video ReproductorVideo
Telefono Televisión Espectador Televisión
Computadora Persona Bocina PC
Expectador Proyector Audifono Celular
PlataformaStremen Telefono Television Enchufe
Bocina USB DispositivoMovil Energia
Bocina UnidadAlmacenamiento
Usuario
Bocina
 ¿Qué objetos pertenecen a los siguientes
objetos?:
 Televisión:
 Cajero:
 Video:
 CPU: Memoria, FuentePoder,Circuito,TarjetaVideo
 Mesa: Pata, Tornillo, Resistol
Televisión
Equipo 6 Equipo 5 Equipo 4 Equipo 3
Circuito Pantalla Pantalla Panttalla
Tarjeta Bocina Cableado Base
Cable Boton Reflector Bocina
Entrada ConexionElectrica Panel Cable
Bocina ConexionWifi FiltroColor Placa
FuenteAlimentacion ConexionBluetooth PalancaEncendido FuenteAlimentacion
Pantalla EntradaUSB FuenteAlimentacion Botones
TarjetaVideo PlacaMadre Sensor Cristal
Microcontralodor Conector Puerto
Bocina
Software
Cajero
Equipo 2 Equipo 1 Equipo 6 Equipo 5
PantallaTactil Boton Pantalla Pantalla
Boton Pantalla Teclado Bocina
Enchufe LectorTarjeta DispensadorDinero AlmacenDinero
CajonDinero Camara TarjetaMadre Tecla
Impresora Bocina Cable Impresora
LectorTarjeta Circuito PlacaMadre
Bocina Bocina Circuito
Camara Camara Puerto
Ticket GPS ConexionWifi
ConexionElectrica
Video
Equipo 4 Equipo 3 Equipo 2 Equipo 1
Titulo Titulo Audio Titulo
Subtitulo Nombre Subtitulo
Informacion Subtitulo
Descripcion

2
video Titulo
1
Subtitulo
1 1
Descripcion Informacion
Ejemplos de Objetos
Equipo 6 Equipo 7 Equipo 4 Equipo 5 Equ

Nombre: Nombre: Nombre: Nombre: Nombre


Video Video Video Video Video
Atributos: Atributos: Atributos: Atributos: Atributo
CalidadImagen CalidadSonido NumeroFPS ColorVide
CalidadSonido CalidadImagen NumeroF
TiempoRespuesta TiempoRespuesta
CalidadIm
DiseñoConsexiones
Colores CalidadS
NumeroPixeles Cantidad
TiempoFrames
CantidadFrames

Métodos: Métodos: Métodos: Métodos: Método


ReproducirVideo ReproducirAudiio ReproducirVideo Reproduc
RecibirSeñal RepoducirImagen ReproducirAudio SubirVolu
TransmitirInformacion IluminarPantalla
BajarVolu
MonstrarImagenes ReproducirInformacion
ReproducirSonidos Reproduc
Tipos de Métodos
 Constructores
 Destructores
 Modificadores
 Selectores
 Iteradores

76
 De los objetos Televisor, Cajero, Video obtener
que objetos pertenecen a estos objetos
 Ejemplo la pantalla pertenece al televisor.
 Que objetos tienen relación con los objetos
Televisor, Cajero, Video
 ControlRemoto tiene relación con el Televisor
Constructor
 Constructor: Es un método que se invoca
cuando un objeto es construido

 El constructor es un proceso que se encarga de:


 Reservar espacio de memoria para los datos del
objeto
 Inicializar los atributos del objeto (darle un estado
inicial)
 Tipos de Constructor de una hoja:
 Oficio, Copia, con Parámetros
78
Destructor
 Destructor: Es un método que se invoca
cuando un objeto es destruido.
 Liberar la memoria reservada para los datos del
objeto.
 La mayoría de los lenguajes lo tiene
implementado por default por lo que solo se lo
implementa cuando el objeto reserva memoria
en tiempo de ejecución.

79
Modificador
 Permite cambiar el estado de un objeto,
modificando los atributos del mismo.
Ej.
Void Fecha::SetDia(byte dd)
{ SetFecha(dd, m, a);
}

80
Selector
 Permite devolver el valor de los atributos sin
alterar su estado.
Ej.
byte Fecha::GetDia()
{ return d;
}

81
Métodos – Ejemplo1-2
Representación gráfica de los métodos de las clases CQuebrado y CVect

CQuebrado CVector

PonNumerador PonDimension
PonDenominador PonElemento
ObtDenominador ObtDimension
ObtNumerador ObtElemento
Simplificar Ordenar

82
Método Ponedor
 El método ponedor es un proceso cuyo trabajo consiste
en asignar valores a los atributos de un objeto.
 En una clase debe haber por lo menos un método
ponedor para cada uno de los atributos.
 Para los nombres de los procesos ponedores
normalmente se utilizan los prefijos Set o Pon

83
Un objeto posee Identidad
 Cada objeto tiene una identidad única, incluso si
su estado es idéntico al de otro objeto
Miembros Públicos, Privados o
Protegidos

 Miembro Público: Atributo o método de una clase


que puede ser accesado desde cualquier parte del
programa.

 Miembro Privado: Atributo o método de una clase


que puede ser accesado solo dentro de esa clase.

 Miembro Protegido: Atributo o método de una clase


que puede ser accesado desde esa clase y sus
clases heredadas.
¿Qué es una Clase?
 Una clase es una descripción de un grupo de
objetos con:
 Propiedades en común (atributos)
 Comportamiento similar (operaciones)
 La misma forma de relacionarse con otros objetos
(relaciones)
 Una semántica en común (significan lo mismo)
 Una clase es una abstracción que:
 Enfatiza las características relevantes
 Suprime otras características (simplificación)
 Un objeto es una instancia de una clase
Objetos y Clases
 Una clase es una definición abstracta de un
objeto
 Define la estructura y el comportamiento compartidos
por los objetos
 Sirve como modelo para la creación de objetos
 Los objetos pueden ser agrupados en clases
Ejemplo de una Clase
 Clase: Curso
 Estado (Atributos)
 Nombre
 Ubicación
 Días Ofrecidos
 Horario de Inicio
 Horario de Término
 Comportamiento (Métodos) (Actividades)
 Agregar un Alumno
 Borrar un Alumno
 Entregar un Listado del Curso
 Determinar si está Completo
Clases
 Concepto
Generalmente, una clase se puede definir como una descripción
abstracta de un grupo de objetos, cada uno de los cuales tiene una
serie de atributos, un estado específico y es capaz de realizar una
serie de operaciones.

Lavadora
 Atributos
marca
 Operaciones modelo
 Comportamiento capacidad...
Programar
PonerRopa
CerrarPuerta
Lavar
Clase
 Luis Joyanes Aguilar
“Una Clase es un tipo definido por el
usuario(programador) que determina las
estructuras de datos y las operaciones
asociadas con este tipo”
“La Clase es simplemente un modelo que se
utiliza para describir uno o más objetos del
mismo tipo”

90
Conceptos de la OOP
Conceptos básicos Tipos de relaciones
 Objeto  Asociación
 Clase  Herencia

Características de la OOP  Agregación

 Abstracción:  Instanciación
 Encapsulamiento:
 Modularidad: Representaciones gráficas
 Jerarquía  Diagramas estáticos (de
clases, de objetos...)
Otros conceptos OOP
 Diagramas dinámicos (de
 Tipos
interacción...)
 Persistencia
Terminología de la POO
 Clase
 Objeto  Herencia
 Atributos  Asociación
 Métodos  Agregación
 Instancia  Polimorfismo
 Abstracción  Constructor
 Encapsulamiento  Destructor
 Modularidad  Miembro Público
 Jerarquía  Miembro Privado
 Generalización  Miembro Protegido
Abstracción
 Abstracción: La abstracción es la capacidad que
permite representar las características esenciales de un
objeto sin preocuparse de las restantes características
(no esenciales).
Abstracción
Abstracción
 Nos permite trabajar con la complejidad del mundo real
 Resaltando los aspectos relevantes de los objetos de una clase
 Ocultando los detalles particulares de cada objeto
 Separaremos el comportamiento de la implementación
 Es más importante saber qué se hace en lugar de cómo se
hace:
Un sensor de temperatura
 Se define porque...
 mide la temperatura
 nos muestra su valor
 se puede calibrar...
 No sabemos... (no nos importa)
 cómo mide la temperatura
 de qué está hecho
 cómo se calibra
Abstracción
 Capacidad para encapsular y aislar la información del
diseño y ejecución.

 Mecanismos en programación:
 Procedimientos y funciones
 Tipo de dato base: Entero, Decimal (Real), Caracter,
cuerda Alpanumérica, Dato de decision,
 Tipos de datos abstractos (TDA), Temperatura, Altura, Tasa
de Seguro Médico,
 Objetos: son TDA a los que se añaden mecanismos como
herencia, métodos, etc.
Abstracción de Datos
 Consiste en utilizar los datos sin preocuparse
por los detalles de su implementación, es decir,
lo importante es saber que tipo de información
se puede utilizar y no como está almacenado
 Que Atributo
 Como Campo

97
Abstracción funcional
 Consiste en saber que es lo que hace un
determinado proceso, pero no como lo hace.
 Por ejemplo el proceso Ordenar de la clase
Vector, sabemos que el método ordenará los
elementos del vector, pero no nos interesa
como lo hará.
 Que  método
 Como  algoritmo

98
Encapsulamiento
 Es la propiedad que permite asegurar que los aspectos
externos de un objeto se diferencie de sus detalles
internos. Consiste en reunir varias cosas para ser
manipuladas como una sola unidad.
 Técnica que permite localizar y ocultar los detalles de un
objeto respecto al usuario, aislándolo del aspecto interno
 Previene que un objeto sea manipulado por operaciones
distintas a las que le son propias, así como que sus
operaciones manipulen datos ajenos a ellas.
 Por ejemplo al definir variables de tipo Registro estamos
encapsulando los campos del registro.
 Al definir una clase estamos encapsulando los atributos y
los métodos.
Encapsulamiento
 Ninguna parte de un sistema complejo debe
depender de los detalles internos de otra.
 Complementa a la abstracción
 Se consigue:
 Separando la interfaz de su implementación
 Ocultando la información interna de un objeto
 Escondiendo la estructura e implementación de los
métodos (algoritmos).
 Exponiendo solo la forma de interactuar con el
objeto
Encapsulamiento
Ejemplo: Un paralelogramo

Vemos que se puede... No vemos...


 Construir con:  Como está representado
 4 puntos (y restricciones) internamente
 1 punto y 2 vectores  4 puntos?
 1 punto, 1 vector, 1  1 punto y 2 vectores?
ángulo y 1 lado
 ...
 Transformaciones:
 Escalado  Como se modifica su escala

 Rotación  Guardando el factor?


 Desplazamiento  Escalando en el momento?
 Dibujar  Idem para rotación, traslación,
etc...
Ocultación de la información
 Principio por el cual los módulos son
utilizados por su especificación, no
por su implementación.
 Los detalles de implementación
están ocultos y sólo es accesible el
interfaz
 Un objeto tiene una interfaz pública
que otros objetos pueden usar
para comunicarse con él.
 El objeto puede mantener
información privada y métodos
que pueden cambiar sin que esto
afecte a otros objetos que
dependen de él.
Comunicación
Comunicación
 Los objetos se comunican entre sí mediante el envío de
mensajes.
 El propósito de un mensaje es pedir al objeto que lo
recibe que active el método que se le indica y que
devuelva al objeto original el resultado de esa acción.
 Una secuencia de instrucciones en un lenguaje clásico
es reemplazada por una secuencia de comunicaciones.
 La sintaxis de una comunicación es muy simple:
<sujeto> <verbo> <complemento>
 – o también:
 <destinatario> <mensaje> <datos>

 <objeto receptor> <método seleccionado>


<parámetros>
Comunicación
Comunicación
 Los mensajes que recibe un objeto son los únicos
conductos que conectan el objeto con el mundo exterior.
 Los datos de un objeto están disponibles para ser
manipulados solo por los métodos del propio objeto.
 Cuando se ejecuta un POO ocurren tres cosas:
 1. Los objetos se crean a medida que se necesitan.
 2. Los mensajes se mueven de un objeto a otro (o
desde el usuario a un objeto) a medida que el
programa procesa la información.
 3. Cuando los objetos no se necesitan se borran y se
libera la memoria.
Modularidad
 La modularidad es la propiedad que permite dividir una
aplicación en partes más pequeñas ( llamadas módulos
), cada una de las cuales debe ser tan independiente
como sea posible de la aplicación en si y de las
restantes partes.
 Este concepto ya viene desde la programación modular,
y se refiere al hecho de realizar un programa por partes,
a las cuales se las denomina módulos.
 Un módulo es un archivo que contiene un conjunto de
declaraciones y/o procesos. En OOP normalmente un
módulo contiene la interfaz y la implementación de un o
más clases relacionadas.

Relaciones
 Están presentes en cualquier sistema
 Definen como se producen los intercambios de
información y datos
 También ayudan a comprender las
propiedades de unas clases a partir de las
propiedades de otras
 Existen 4 tipos de relaciones:
 Asociación
 Herencia
 Agregación
 Instanciación
III. El Paradigma OO: Diagrama de Clases

Relaciones entre Clases


 Los enlaces entre de objetos pueden
representarse entre las respectivas clases

 Formas de relación entre clases:


 Asociación y Agregación (vista como un caso
particular de asociación)
 Generalización/Especialización

 Las relaciones de Agregación y Generalización


forman jerarquías de clases
Relación entre objetos

 Los objetos tienen, aparte de atributos y


métodos y relaciones de herencia, relaciones
con otros objetos. Las relaciones más
importantes son:
 • Asociación
 • Agregación (composición)
Asociación
 Una asociación es una relación semántica entre objetos.
Cuando un objeto accede a los atributos y métodos de
otro objeto estamos definiendo una asociación entre
ellos.
Asociación
Asociación
 Relación más general
 Denota una dependencia semántica
 Es bidireccional
 Primer paso para determinar una relación
más compleja
Ejemplo: Relación entre un producto y una venta. Cualquier venta
está asociada a un producto, pero no es, ni forma parte de, ni posee
ningún producto… al menos en una primera aproximación.

 Cardinalidad: multiplicidad a cada lado


 Uno a uno: Venta-Transacción
 Uno a muchos: Producto-Venta
 Muchos a muchos: Comprador-Vendedor
Asociación
 La asociación expresa una conexión bidireccional
entre objetos
 Una asociación es una abstracción de la relación
existente en los enlaces entre los objetos

Univ. de Murcia : Universidad Un enlace Antonio : Estudiante

Universidad Estudiante
Una asociación
Asociación
 Ejemplo:
Hombre Mujer
Casado 0..1
Nombre Nombre
marido 0..1 Casada

casado-con

0..1
mujer
0..1 Persona Compañía
nombre * trabaja-para nombre
s.s. dirección
emplea-a *
jefe 0..1

*
Administra

empleado
… Asociación
 Especificación de multiplicidad
(mínima...máxima)
1 Uno y sólo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)

 La multiplicidad mínima >= 1 establece una


restricción de existencia
Asociación Cualificada
Aerolínea Viajero
* 0..1
nro_billete

Tablero Cuadro
fila 1 1
Ajedrez
columna

Reduce la multiplicidad del rol opuesto al considerar el valor


del cualificador
Agregación
La agregación es una relación que define que un
objeto es parte de otro objeto. Cuando
definimos que un objeto tiene como atributo otro
objeto decimos que es una agregación. A través
de la agregación se definen objetos
compuestos.
A la agregación también se le conoce como
composición. Ya que se dice que un
objeto “es parte de” otro objeto.
Agregación
 Una clase contiene a otra
clase
 Ésta “es parte de” aquélla.
 También se denomina
relación “es parte de” (has a)
 Una clase puede contener a otra:
 Por valor: Cuando los objetos de la clase contenida
se crean y destruyen al mismo tiempo que los de la
clase continente
 Por referencia: Cuando no necesariamente ocurre lo
anterior
Agregación
Agregación
Un coche está hecho de
 Volante Volante

 Palanca de cambio
 Motor
Marchas
 Ruedas
Coche

Motor

Ruedas
III. El Paradigma OO: Diagrama de Clases

Agregación
 La agregación representa una relación parte_de
entre objetos

 Puede ser caracterizada con precisión


determinando las relaciones de comportamiento y
estructura que existen entre el objeto agregado y
cada uno de sus objetos componentes
III. El Paradigma OO: Diagrama de Clases

Agregación: Caracterización
 Caracterizaciones relacionadas con la multiplicidad

Multiplicidad Mínima Objeto Agregado Máxima


0  flexible 1  disjunto
> 0  estricta Multiplicidad
(mína.. máxa) > 1  no disjunto

Multiplicidad Mínima Multiplicidad Máxima


0  nulos permitidos (mínc.. máxc) 1  univaluado
> 0  nulos no permitidos > 1  multivaluado
Objeto Componente
III. El Paradigma OO: Diagrama de Clases

... Agregación: Caracterización


 Además una agregación se podría caracterizar según:

¿Puede el objeto parte comunicarse directamente con objetos


externos al objeto agregado?
 No => inclusiva
 Si => no inclusiva
¿Puede cambiar La composición del objeto agregado?
 Si => dinámica
 No => estática
III. El Paradigma OO: Diagrama de Clases

Ejemplos
Window
scrollbar[2] : Slider
title : Header
body : Panel

Window

1 1
1

scrollbar
2 title 1 body 1
Slider Header Panel
... Ejemplos
Member-of * Committee
Person *

{ subset }
1 Chair-of *
Represents an
incorporated entity.

worker Person employee employer Company


0..1
* *
0..1

boss

{Person.employer =
Person.boss.employer}
… Ejemplos
Agregación
Polígono 1 contiene Punto
3..*
{ordenado}

Persona
*
*
Cuenta
or Asociación excluyente
* Empresa
1

Usuario está-autorizado-en Estación


* *

Autorización
Clase de asociación prioridad
privilegios

camb_privil()
Relación de Instanciación
 En determinados casos una clase (p.ej. un
vector) puede implementarse
independientemente del tipo (real, complejo,
color...) de alguno de sus atributos:
Tipo
 Definimos una clase
parametrizada o template Vector
(plantilla)
 Para cada uno de los tipos
que necesitemos
VectorColores VectorEnteros
definimos una nueva
<Color> <int>
clase  Instanciación
Clases e instancias
Instanciación
Hombre Mujer

Nombre Nombre

Empleado1 Mujer1 Mujer2

Nombre: José Luis Nombre: Maria Luisa Nombre: Fernanda


Instanciación
Vehículo

Modelo:
NumeroRuedas:

Coche1 Coche2 Camion1 Motocicleta1 Bicicleta1


Modelo:BMW Modelo:AlfaRomero Modelo:Volvo Modelo:Italica Modelo:Apac
NumeroRuedas: 4 NumeroRuedas: 4 NumeroRuedas: 6 NumeroRuedas: 2 NumeroRued
Cardinalidad
Clase abstracta
Ejercicio

Clase Descripción
Catedrático Maestro de alto nivel que imparte conocimiento
Estudiante Jóvenes que reciben conocimiento
Instituto Centro de Aprendizaje
Clase Un grupo de personas que llevan una materia donde
reciben el conocimiento
Grupo Un conjunto de estudiantes que pertenecen a una
materia
Clase Atributo Descripción

Estudiante NumeroControl Código con que se identifica el alumno


Estudiante Generación Año de ingreso al instituto
Estudiante Nombre Identificación del estudiante
Estudiante Calificación Calificación del estudiante
Instituto NumeroRegistro El numero en que está registra ante TECNM o la SEP
Instituto Nombre Descripción del instituto donde está localizado
Catedrático NumeroControl Código de identificación del Docente
Catedrático NombreCompleto Identificación del Catedrático
Clase NombreMateria Descripción de la materia que se imparte en la clase
Clase Duración Cuanto dura la clase
Grupo CódigoGrupo Clasificación del grupo
Clase Método Descripción

Catedrático DarClase Impartir conocimiento a un grupo de alumnos

Catedrático Califica Asienta una calificación a un alumno

Catedrático AsignaActividad Actividad que debe realizar el alumno

Estudiante EntregarActividad Realizar la tarea asignada por el catedrático

Estudiante EstáAprobado Si o no Está aprobado

Clase

Grupo
uto Catedrático Estudiante Grupo
NombreCompleto NombreCompleto IdentificacionGrupo
Registro NúmeroControl NúmeroControl NumeroEstudiantes
Generación Turno
Calificacion Semestre

ombre Califica EntregaActividad AsignarClase


NumeroRegistro AsignaTarea EstáAprobado ASignarIdentificacion
AsignaNombreCompleto ASignaNombreCompleto CalcularNumeroEstudiant
AsignaNumeroControl AsignaNumeroControl AsignarTurno
AsignarGeneracion ASignarSemestre
AsignarCalificación
1 *
Tiene
Catedrático *
Instituto Pertenece 1 Tiene Aprende de *
Enseña Estudiante
1
Pertenece

Tiene * *
Tiene

* Imparte
1
* pertenece

Clase *
Tiene tiene
Grupo
Ejercicios
 Crear un proyecto UML llamado Asociacion en el que se diseñe un
diagrama de clases que modele el proceso de dar de alta a cada una
de las personas que se apuntan a una asociación.
 De cada persona interesa saber sus datos básicos: Cedula, nombre
completo y fecha de nacimiento. Cuando cada nuevo socio se da de
alta, se le asigna un código de asociado alfanumérico y se anota
la fecha de alta.
 La clase Fecha se modela con tres campos (día, mes y año) de tipo
entero. La clase Cédula se modela con un campo de tipo entero
llamado FechaNacimiento y un campo de tipo carácter llamado
Iniciales.

 Solución:
 http://joanpaon.wordpress.com/2013/07/01/uml-diagrama-de-clases-
ejercicio-1/
Ejercicios
 Crear un proyecto UML llamado Torneo en el que se diseñe un diagrama
de clases que modele la estructura necesaria para manejar los datos de
los encuentros de un torneo de tenis de mesa en la modalidad de sorteo y
eliminatoria.
 Del torneo interesa conocer la fecha del torneo, los encuentros
celebrados y el ganador. De cada jugador, que debe de conocer
perfectamente las reglas, interesa saber el número de federado de la
federación de la que es miembro.
 De cada persona interesa saber sus datos básicos: Cédula, nombre
completo y fecha de nacimiento. La clase Fecha se modela con tres
campos (día, mes y año) de tipo entero. La clase Nif se modela con un
campo de tipo entero llamado fecha y un campo de tipo carácter
llamado Iniciales.
 De cada encuentro interesa conocer los oponentes, el ganador y
el resultado final del marcador de cada una de las tres partidas que se
juegan a 21 puntos.
 Solución: http://joanpaon.wordpress.com/2013/07/24/uml-diagrama-de-
clases-ejercicio-2/
Una biblioteca tiene copias de libros Estos últimos se Una biblioteca tiene
copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela,
teatro, poesía, ensayo), editorial, año y autor.
Los autores se caracterizan por su nombre, nacionalidad y fecha de
nacimiento.
Cada copia tiene un identificador y puede estar en la Cada copia tiene un
identificador, y puede estar en la biblioteca, prestada, con retraso o en
reparación.
Los lectores pueden tener un máximo de 3 libros en préstamo.
Cada libro se presta un máximo de 30 días, por cada día de retraso, se
impone una “multa” de dos días sin posibilidad de coger un nuevo libro.
Realiza un diagrama de clases y añade los métodos necesarios para
realizar el préstamo y devolución de necesarios para realizar el préstamo y
devolución de libros.

También podría gustarte