You are on page 1of 27

Fudamentos de Programacin

Objetivo: Analizar y solucionar problemas


informticos y representar su solucin mediante
herramientas de software orientado a objetos.
1.1 Evolucin de la programacin.
Programa: es una secuencia de instrucciones
escritas en un orden lgico con el propsito de
realizar o resolver un problema especfico.

Desde el inicio de la computacin se han
establecido modelos o paradigmas para
construir programas los cuales establecen
estrategias especficas para disear los
programas

1.1 Evolucin de la programacin.
Paradigma de la programacin secuencial
Este paradigma se caracteriza por la ejecucin de un
programa lnea por lnea, de principio a fin y adems
del uso de la sentencia GOTO que permita realizar
saltos hacia adelante y hacia atrs en el cdigo.

Este paradigma tiene la desventaja de complicar el
seguimiento y modificacin del cdigo cuando los
programas son muy grandes y hacen uso excesivo de
la sentencia GOTO
1.1 Evolucin de la programacin.
Paradigma de la programacin secuencial
Considere el siguiente algoritmo en donde c divide a b y su resultado se almacena en a
en enfoque secuencial.

1. Inicio
2. Define a=0, b = 0, c = 0
3. Leer b
4. Leer c
5. Si c == 0
6. goto fin1
7. a <- b / c
8. Imprimir El valor de a = a
9. Goto fin2
10. Fin1: Imprimir Error de divisin por cero
11. Fin 2: Imprimir Proceso terminado
12. Fin

Paradigma de la Programacin Estructurada.
Este paradigma sustituye al secuencial, en el que adems de
ejecutar las sentencias lnea a lnea permite crear subrutinas para
sustituirlas por el uso del GOTO. A diferencia de GOTO al llamar a
una subrutina, el control del programa se transfiere a otro
segmento de cdigo donde se encuentra esta, una vez ah, ejecuta
cada una de las lneas que la conforman y regresa al punto donde
fue llamada la subrutina, para ejecutar la siguiente sentencia
despus de la llamada.

En este paradigma los lenguajes integran las estructuras de control
repetitivas for, while y do-while, ademas de las de decisin
compuesta if-else y seleccin mltiple do-case o switch.

De esta manera hace ms fcil entender y modificar un programa.


1.1 Evolucin de la programacin.
Paradigma de la Programacin Estructurada.
Utiliza tcnicas tradicionales de programacin que
datan de las dcadas de los 60s y 70s,
especialmente desde la creacin del lenguaje Pascal.
Este tipo de programa es un enfoque muy especfico
que normalmente genera programas bien escritos y
legibles aunque esto no necesariamente implique
que se estructurado.
Esta basado en la modularizacin


1.1 Evolucin de la programacin.
La programacin estructurada incluye las
estructuras o instrucciones bsicas de control:
Secuencia
Decisin o Seleccin
Bucles, Lazos, Iteracin o Repeticin

1.1 Evolucin de la programacin.
Paradigma de la programacin O.O.
Es el paradigma de programacin dominante en la actualidad y
ha remplazado las tcnicas de programacin estructurada

Se compone de objetos y son elementos autosuficientes de un
programa de computadora que representa un grupo de
caractersticas relacionadas entre s y se diseo para realizar una
tarea dada; cada objeto tiene una funcionalidad especfica
expuesta a sus usuarios y una implementacin oculta. Muchos
de ellos se obtiene de una biblioteca y otros se disean a la
medida.
1.1 Evolucin de la programacin.
Paradigma de la programacin O.O.
Los objetos constan de datos y operaciones que
se realizan sobre esa informacin.

1.2 Conceptos fundamentales de la POO.
La POO es un enfoque conceptual especfico para disear
programas utilizando un lenguaje que se centra en los
objetos cuyas propiedades mas importantes son:

Abstraccin
Encapsulamiento y ocultacin de datos
Herencia
Polimorfismo
Reusabilidad o reutilizacin de cdigo.

1.2 Conceptos fundamentales de laPOO.
Abstraccin
Es la propiedad que considera los aspectos mas significativos o
notables de un problema y expresa una solucin en esos trminos. En
esta esta etapa crucial se determinan grupos de entidades con sus
datos y operaciones que conformaran las clases de datos y que
representarn la interfaz con el usuario.

Encapsulamiento
Significa reunir en cierta estructura de datos los elementos que, a
determinado nivel de abstraccin, se pueden considerar de una
misma entidad, y es el agrupamiento de datos y operaciones
relacionadas bajo una misma unidad de programacin, lo que aumenta
la cohesin de los elementos del sistema. Este mecanismo permite
ocultar lo que hace un objeto de los que hacen otros objetos del
mundo exterior, por lo que se denomina tambin ocultacin.



1.2 Conceptos fundamentales de la POO.
Herencia
El concepto de clases divididas en subclases se utiliza en la vida
diaria y conduce al de herencia; por ejemplo la clase animal se
divide en mamferos, anfibios, insectos, aves, etc. La idea bsica
consiste en que cada subclase comparte caractersticas con la
clase de la cual se deriva.

La clase principal de la que derivan las restantes se denomina
clase base, padre o superclase, las subclases tambin se
denominan derivadas o hijas

Polimorfismo
Reusabilidad o reutilizacin de cdigo.

1.2 Conceptos fundamentales de la POO.
Polimorfismo
Es la propiedad que le permite a una funcin tener el mismo
nombre en clases diferentes y actuar de otro modo distinto en
cada una de ellas. Esto implica la capacidad de una operacin de
ser interpretada slo por el propio objeto que lo invoca. Esto se
da en tiempo de ejecucin.

Reusabilidad o reutilizacin de cdigo.
Significa que una vez que se ha creado, escrito y depurado una
clase se puede poner a disposicin de otros programadores de
manera similar que el uso de bibliotecas de funciones en un
lenguaje de programacin
1.3 Lenguajes orientados a objetos
EL idioma que habla la computadora es el lenguaje nativo o lenguaje
mquina; este es un conjunto de instrucciones primitivas construidas
en cada computadora y difiere entre los diversos tipos de
computadoras existentes; dichas instrucciones estn en formato de
cdigo binario o digital.

Los lenguajes de programacin se utilizan para escribir programas
fuentes que, en las computadores modernas, constan de secuencias
de instrucciones que se codifican como serie de dgitos que dichas
computadoras podran entender.

Cada lenguaje de programacin tiene un conjunto de instrucciones
que la computadora entender directamente en su cdigo mquina
o, en caso necesario, se traducirn a su cdigo. Las instrucciones
bsicas y comunes en casi todos los lenguajes de programacin son :

1.3 Lenguajes orientados a objetos
De entrada/salida: transferencia de informacin desde/hacia
dispositivos: ejemplo, teclado y pantalla.

De clculo: indican a la computadora el calculo de operaciones
aritmticas
De control: modifican la secuencia en la ejecucin del programa

En realidad la computadora no entiende el lenguaje de
programacin, en vez de eso requiere un programa que traduzca
el cdigo(programa) fuente a cdigo mquina

1.3 Lenguajes orientados a objetos

Los lenguajes de programacin se clasifica en:

Lenguaje Mquina
Lenguaje de bajo nivel o ensamblador:
Lenguaje de alto nivel

1.3 Lenguajes orientados a objetos
Lenguaje mquina.- un conjunto de instrucciones primitivas
construidas en cada computadora y difiere entre los diversos
tipos de computadoras existentes; dichas instrucciones estn en
formato de cdigo binario o digital.

Lenguaje ensamblador.- los lenguajes ensambladores de
programacin de bajo nivel se desarrollaron para facilitar el
trabajo del programador; estos utilizan un nemnico o
nemotcnico como abreviatura para representar las
instrucciones y que sean mas fcil de recordar en comparacin
con una sentencia de dgitos binarios.
1.3 Lenguajes orientados a objetos
Lenguaje ensamblador Lenguaje mquina
ADD(sumar) 10011001
LOAD(cargar) 10011010
SUB(restar) 10011011
MULT(multiplicar) 10011100
La siguiente tabla muestra un ejemplo de sentencias
en lenguaje ensamblador a lenguaje mquina.
1.3 Lenguajes orientados a objetos
Lenguaje ensamblador.-
Como el lenguaje ensamblador depende de la mquina,
entonces un programa ensamblador nicamente se puede
ejecutar en un mquina especfica y los cdigos o palabras
nemotcnicas solo sirven para la programacin de dichos
aparatos

Por esta dificultad y con la intensin de superar el inconveniente
de la dependencia en cuanto a plataforma, computadora y
procesador especfico, se desarrollaron lenguajes de alto nivel
que permiten la programacin independiente de la mquina
sobre la que se ejecutan los programas.
1.3 Lenguajes orientados a objetos
Lenguaje de alto nivel.- estos lenguajes utilizan palabras similares al ingls, as
como smbolos, signos de puntuacin y aritmticos, de modo que facilitan el
desarrollo de programas.

Con el paso de los aos se han diseado numerosos lenguajes de programacin
de alto nivel. Los ms populares son:

COBOL (Common Business Oriented Lenguage)
FORTRAN (Formula Translation)
BASIC (Beginner All-porpuse Symbolic International Code)
Pascal
ADA
Visual Basic
Delphi
C, C++, C#
Java

1.3 Lenguajes orientados a objetos
Programa fuente: es un programa escrito en algn lenguaje de
programacin, ya sea ensamblador o de alto nivel.

Programa ejecutable: es el resultado del proceso de traduccin de
programa fuente enlazados con otros cdigos o programas de
biblioteca del lenguaje de programacin especfico al lenguaje mquina.

Existen 2 tipos de traductores de cdigo fuente a cdigo mquina:

Compilador: Es un programa que traduce un programa fuente a cdigo
objeto para posteriormente ser enlazado y crear un programa
ejecutable independiente del compilador. Pascal, C++, Cobol, V Basic.

Traductor: Es un programa que traduce y ejecuta un programa fuente,
lnea por lnea. El programa traductor deber estar siempre presente
para ejecutar el programa fuente. V Basic, Java,





1.4 Relaciones entre clases y objetos.
Para entender la POO observe los siguientes
conceptos bsicos:

Objetos
Clases
Herencia
Envo de mensajes


Objetos
Entender que es un objeto es la clave para entender cualquier
lenguaje orientado a objetos.

Un objeto del mundo real es cualquier cosa que vemos a nuestro
alrededor.

Que tiene que ver esto con la programacin?

Todo el Programa Orientado a Objetos est construido en base a
diferentes componentes (Objetos) conformados por sus
caractersticas y operaciones, cada uno tiene un rol especfico en el
programa y todos los componentes pueden comunicarse entre ellos
de formas predefinidas.
1.4 Relaciones entre clases y objetos.
Las Clases
En el mundo real, normalmente tenemos muchos objetos del mismo
tipo. Por ejemplo, nuestro telfono celular es slo uno de los miles
que hay en el mundo.

Si hablamos en trminos de la programacin orientada a objetos,
podemos decir que nuestro objeto celular es una instancia de una
clase conocida como "celular".

En el proceso de abstraccion podemos modelar conceptualmente a los
celulares con las caractersticas: marca, modelo, sistema operativo,
pantalla, teclado, etc; y comportamientos: hacer y recibir llamadas,
enviar mensajes multimedia, transmisin de datos, etc.

A ese modelo o plantilla le llamamos CLASE, y a los equipos que
creamos a partir de ella la llamamos OBJETOS.


1.4 Relaciones entre clases y objetos.
Ejemplo de Clase-Objeto
De este modo decimos que
un_objeto es un objeto o
instancia de la clase celular
1.5 Papel de clases y objetos en el
anlisis y el diseo.
El anlisis es la distincin y la separacin de las partes de un todo
hasta llegar a conocer sus principios o elementos.

El anlisis se extiende luego para describir la manera en que
interactan los actores u objetos y el sistema para manipular el modelo
del dominio de aplicacin.

1.5 Papel de clases y objetos en el
anlisis y el diseo.
El diseo de clases y objetos es un proceso incremental e iterativo. Debe
asegurar la optimizacin en los parmetros:
Acoplamiento: Grado de acoplamiento entre mdulos.
Cohesin: Mide el grado de conectividad entre elementos de un mdulo, y
entre objetos de una clase.
Suficiencia: Indica que las clases capturan suficientes caractersticas de la
abstraccin para conseguir un comportamiento e interaccin eficiente y
con sentido.
Completitud: Indica que la interface de la clase captura todo el significado
caracterstico de una abstraccin, escrito en el mnimo espacio.
Primitividad: Las operaciones deben implementarse si dan acceso a una
representacin fundamental de la abstraccin. Cuales son operaciones
primitivas y cuales no (se pueden realizar a partir de otras) es un asunto
subjetivo y afecta a la eficiencia en la implementacin.