You are on page 1of 52

Tema 1 Fase 1

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Agenda

Introduccin. Evolucin de los Lenguajes de Programacin La Programacin Orientada a Objetos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Introduccin

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

No debe confundirse Tcnicas de Programacin con Lenguajes de Programacin. La Programacin Orientada a Objetos (POO) es una tcnica de programacin por lo que puede aplicarse a algunos lenguajes de programacin.

La POO hoy en da se aplica a muchos LP:

C C++ Pascal Delphi Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Hay que dejar de lado todas las ideas preconcebidas acerca de cmo debe realizarse un programa La POO tiene muy poco que ver con la forma habitual de programar, e incluso de ver el mundo. Usted, programador o no, ya sabe qu es un objeto y cmo manipularlo, lo lleva haciendo desde que naci; si entiende la similitud entre los objetos del mundo fsico y los informticos, la POO se le har ms sencilla. Pero esto es lo ms difcil: hacer ver qu es la POO, quitarnos todas las ideas preconcebidas sobre programacin tradicional.
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Evolucin de los Lenguajes de Programacin

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

La historia de los lenguajes de programacin se ha desarrollado en base a una sola idea conductora: hacer que la tarea de realizar programas sea cada vez lo ms simple, flexible y portable posible. "A medida que se van desarrollando los lenguajes, se va desarrollando tambin la posibilidad de resolver problemas cada vez ms complejos. En la evolucin de cada lenguaje, llega un momento en el que los programadores comienzan a tener dificultades a la hora de manejar programas que sean de un cierto tamao y sofisticacin" (Bruce Eckel)

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

La evolucin en los lenguajes ha venido impulsada por motores muy distintos: i. Los avances tecnolgicos ii. Los avances conceptuales (de planteamiento) iii. Los avances en cuanto a enfoque de la programacin

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Evolucin en cuanto a la tecnologa

Un computador es un sistema electrnico digital (binario=bits) secuencial. El microprocesador es la CPU de un computador Un programa es una sucesin de instrucciones que se ejecutan secuencialmente. Para que el programa sea ejecutado por el microprocesador debe ser elaborado en binario. En la programacin pueden cometerse muchos errores (bugs) los cuales deben ser depurados.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

10

Programar en binario es prcticamente imposible aun cuando se use como alternativa el sistema hexadecimal. Cronolgicamente el primer avance importante vino con la aparicin de los lenguajes ensambladores. A estos lenguajes se les llama de "bajo nivel", ya que se hallan estrechamente ligados a la forma de trabajo del microprocesador. Lo que hace un lenguaje ensamblador es transcribir unos nemnicos (palabras fciles de recordar) a una secuencia ceros y unos a los que el nemnico representa y que s son entendibles por el microprocesador.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

11

Lenguaje Ensamblador

Memoria
Direccin 0000 0000 0000 0000 0000 0000 0000 0010

Lenguaje Mquina
Instruccin 0000 1000 0000 0100 0000 1001 0000 0101 1000 0000 :

Microprocesador

0000 0002 0004 :

MOV AX, 04 MOV BX, 05 ADD AX, BX :

0000 0000 0000 0100 :

Programa a bajo nivel construido con nemnicos

Inconveniente: Lenguajes ensambladores estn fuertemente comprometidos con el microprocesador

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

12

El siguiente paso fue la aparicin de los lenguajes de alto nivel. El proceso de desarrollo de una aplicacin con un lenguaje de alto nivel es mucho ms rpido, simple y, por tanto, resulta ms fcil detectar y corregir errores. Esto se debe principalmente a dos factores:

Cada instruccin que escribimos en lenguaje de alto nivel puede


equivaler a varias decenas e incluso cientos de instrucciones en ensamblador.

La sintaxis de las instrucciones y los nemnicos que usamos se


parecen algo ms al lenguaje cotidiano.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

13

Lenguajes Traductores: Compiladores Intrpretes

Memoria Lenguaje
Mquina
Direccin 0000 0000 0000 0000 0000 0000 0000 0010 0000 0000 0000 0100 : Instruccin 0000 1000 0000 0100 0000 1001 0000 0101 1000 0000 :

Los compiladores se enlazan con otros cdigos o programas de bibliotecas del LP especfico y se convierten en un archivo ejecutable. Los Intrpretes son traductores que no producen copias completas y nicas del programa en lenguaje mquina sino que traducen y ejecutan el programa fuente instruccin a instruccin

public class Hello { public static void main(String[] args) { System.out.println("Hola mundo"); } } : :

Programa a alto nivel : Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

14

Lenguaje de bajo nivel vs lenguajes de alto nivel:

Complejidad: LP BN ms difciles de programar que LP AN Portabilidad: LP AN mas fciles de trasladarlos a otros entornos Velocidad de ejecucin: Los LP BN estn directamente
relacionados con el hardware por lo que se ejecutan ms rpidamente

Depuracin: Ms sencillo encontrar y corregir errores en LP AN

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

15

Evolucin en cuanto a la conceptualizacin

Se refiere a la metodologa usada para la programacin, y, en este contexto, podemos encontrar:

i. Programacin lineal ii. Programacin estructurada iii. Programacin Orientada al Objeto

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

16

Programacin lineal:

Cada lnea de programa debe ir precedida de un identificador


(etiqueta) para poder referenciarla.

La programacin en ensamblador es lineal, es decir, las


instrucciones se ejecutan en el mismo orden en que fueron escritas.

Puede sin embargo alterarse este orden haciendo saltos desde


una instruccin a otro lugar del programa distinto al que continuaba.

Ejemplo: Basic (instruccin Goto)

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

17

Ejemplo: Programa que muestra los nmeros del 1 al 100


(seudocdigo):
1. Hacer una variable igual a 0 2. Sumar 1 a esa variable 3. Mostrar la variable 4. Si la variable es 100 -> terminar, si_no -> saltar a 1

Este sistema de trabajo es complicado, pues obliga al programador a retener


en su cabeza permanentemente todo el cdigo escrito hasta un momento determinado para poder seguir escribiendo el programa; adems a la hora de leerlo, el programador se pierde con facilidad porque debe ir saltando continuamente de unos trozos de cdigo a otros

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

18

Programacin estructurada

Veamos el mismo seudocdigo del ejemplo anterior con


programacin estructurada:
Hacer una variable igual a 0 Mientras que sea menor que 100 -> sumar 1 y mostrarla

Los saltos estn altamente desaconsejados Lo que se intenta es que el programador pueda hacer
programas cada vez ms extensos sin perderse en un entramado de lneas de cdigo interdependientes.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

19

Para ello, junto con la programacin estructurada aparece un


concepto que nos permite construir programas ms amplios con menor esfuerzo: el de funcin.

La idea es simple: muchas veces se realizan procesos que se


repiten y en los que slo cambia algn factor. Si se trata ese proceso como un subprograma al que se llame cada vez que se necesite, y cada vez que se llame puede cambiarse ese factor, se reducir el margen de error al reducir el nmero de lneas que necesite el programa ya que no hay que repetir todas esas lneas cada vez que se quiera realizar el proceso. Con una sola lnea de llamada al subprograma ser suficiente; adems, de haber algn fallo en este proceso, el error queda circunscrito al trozo de cdigo de la funcin.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

20

Las funciones son unas cajas negras, que reciben y devuelven


valores. Solo hay que programarlas una vez, probarlas por separado y comprobarlas que funcionan correctamente. Una vez terminadas, uno puede olvidarse de cmo se hicieron y usarlas siempre que se quiera.

Tambin aparece el concepto de variables de mbito reducido.


Antes, cualquier variable usada, era conocida en todo el programa. Resultado: si definamos 500 variables, no nos acordbamos para qu serva cada una. Con un lenguaje estructurado, las variables son conocidas solo por aquellas partes del programa donde nos interesa que lo sean, pudiendo re-usar los nombres de las variables sin que haya colisin, siempre que se utilicen en mbitos distintos.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

21

Programacin Orientada al Objeto

Ofrece mucho mayor dominio sobre el programa liberndonos an


ms de su control. Hasta ahora, el control del programa era tarea del programador quien tena que controlar y mantener en su mente cada proceso que se realizaba y los efectos colaterales que pudieran surgir entre estos (colisiones).

En POO, el programa se controla a s mismo y el programador se


libera enormemente pudiendo realizar aplicaciones mucho ms complejas al exigir menor esfuerzo de atencin, ya que los objetos son entidades autnomas que se controlan a s mismos, si han sido creados correctamente. Esto es posible principalmente porque los objetos nos impiden mezclar sus datos con otros mtodos distintos a los suyos
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

22

En programacin estructurada, una funcin trabaja sobre unos


datos, y no debera modificar datos que no le corresponde hacer, pero de eso tiene que encargarse el programador.

En POO es el propio sistema de trabajo el que impide que esto


ocurra. Adems, la re-usabilidad del cdigo escrito es mucho mayor que con el uso de funciones, y las portabilidad es tambin mayor.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

23

Evolucin en cuanto al enfoque

La evolucin de los lenguajes de programacin, en cuanto a enfoque es tambin una evolucin conceptual, pero sta es tan profunda que supone un cambio drstico en cuanto al modo de concebir el tratamiento de la programacin. En este sentido, existen tres enfoques diferentes:

i. Programacin procedural ii. Programacin declarativa iii. Programacin orientada a objetos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

24

Programacin Procedural

Casi todos los lenguajes que conocemos trabajan de forma


procedural. Java, C, Pascal, BASIC, Cobol, Fortran, APL, RPG, Clipper, etc.

En ellos, debemos establecer, hechos (datos), reglas para el


manejo de esos datos y de decisin y tenemos que decirle al lenguaje cmo alcanzar el objetivo que se persigue, es decir, donde buscar la informacin, cmo manipularla, cuando parar, etc.

Si sabe programar en algn lenguaje procedural, todo esto le


parecer obvio, pero no funciona as con los lenguajes declarativos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

25

Programacin Declarativa

El programa que representa este tipo de programacin es el


ProLog.

ProLog es acrnimo de PROgramming in LOGic. Este lenguaje


fue desarrollado en la universidad de Marsella hacia 1970 por Alan Clomerauer y sus colegas.

ProLog, se basa en manipulaciones lgicas, esto es, utiliza la


lgica proposicional -lgica de predicados- para realizar sus deducciones.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

26

En ProLog no se programa, sino que se declara hechos. Es la


maquinaria del lenguaje quien se encargar de extraer las conclusiones que resulten inferibles de estos hechos.

A esta maquinaria se le llama motor de inferencias, que es el


corazn de un Sistema Experto, probablemente la aplicacin ms difundida de la Inteligencia Artificial.
%% declaraciones padrede('juan', 'maria'). % juan es padre de maria padrede('pablo', 'juan'). % pablo es padre de juan %% reglas % A es hijo de B si B es padre de A hijode(A,B) :- padrede(B,A). % A es abuelo de B si A es padre de C y C es padre de B abuelode(A,B) :padrede(A,C), padrede(C,B).

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

27

Programacin orientada al objeto.

Una tcnica de programacin no es un lenguaje, pero puede


aplicarse a cualquier lenguaje.

Puede definirse como un conjunto de tcnicas y reglas a seguir


para hacernos la tarea de programar ms fcil.

Adems, son consejos de expertos programadores, que tras


aos de trabajo, han acumulado una gran experiencia. Pero estas tcnicas, son obviamente, independientes del lenguaje en que trabajemos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

28

Un lenguaje de programacin, es algo que todos ms o menos


conocemos: un conjunto de instrucciones entendibles directamente o traducibles al lenguaje del computador con el que trabajemos; combinando estas instrucciones realizamos programas.

Es cierto sin embargo, que para poder aplicar POO al 100%, es


necesario que el lenguaje nos proporcione una serie de mecanismos inherentes al propio lenguaje.

En cualquier caso, la POO es casi 100% procedural y, desde


luego, no es en absoluto declarativa

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

29

Programacin Orientada a Objetos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

30

LA OOP: NO ES un sistema de comunicacin con los


programas basados en ratones, ventanas, iconos, etc. Como normalmente los lenguajes de POO suelen
presentar estas caractersticas y habitualmente estos entornos suelen desarrollarse con tcnicas de OOP, algunas personas tiende a identificar OOP y entornos de este tipo.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

31

NO ES es un lenguaje de programacin.
Las tcnicas de POO pueden utilizarse en cualquier lenguaje
conocido y que estn por venir, aunque estos, incluirn facilidades para el manejo de objetos.

Desde luego, que en los lenguajes que preveen el uso de objetos, la


implementacin de las tcnicas de POO resulta mucho ms fcil y provechosa que en los otros. Pero del mismo modo, se pueden utilizar estos lenguajes sin que los programas resultantes tengan nada que ver con la POO.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

32

La POO es un conjunto de tcnicas que nos permiten incrementar nuestro proceso de produccin de software; aumentando nuestra productividad por un lado y permitindonos abordar proyectos de mucha mayor envergadura por otro.
Usando estas tcnicas, nos aseguramos la re-usabilidad de nuestro cdigo, es decir, los objetos que hoy escribimos, si estn bien escritos, nos servirn para "siempre".

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

33

Hasta aqu, no hay ninguna diferencia con las funciones, una vez escritas, estas nos sirven siempre. Pero es que, y esto s que es innovador, con POO podemos re-usar ciertos comportamientos de un objeto, ocultando aquellos otros que no nos sirven, o redefinirlos para que los objetos se comporten de acuerdo a las nuevas necesidades

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

34

Ejemplo: si tenemos un automvil y queremos que sea ms rpido, no construimos uno nuevo; simplemente le cambiamos el carburador por otro ms potente, cambiamos las ruedas por otras ms anchas para mayor estabilidad y le aadimos un sistema turbo, pero seguimos usando todas las otras piezas. Desde el punto de vista de la POO Qu hemos hecho?

Hemos modificado dos cualidades (mtodos) de nuestro objeto:


el carburador y las ruedas.

Hemos aadido un mtodo nuevo: el sistema turbo.

En programacin tradicional, nos hubisemos visto obligados a construir un automvil nuevo.


Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

35

Dicho en trminos de POO, si queremos construir un objeto que comparte ciertas cualidades con otro que ya tenemos creado, no tenemos que volver a crearlo desde el principio; simplemente, decimos qu queremos usar del antiguo en el nuevo y qu nuevas caractersticas tiene nuestro nuevo objeto.
An hay ms, con OOP podemos incorporar objetos que otros programadores han construido en nuestros programas y, adems, podemos modificar los comportamientos de los objetos construidos por otros programadores sin tener que saber cmo los han construido ellos.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

36

Esto supone una nueva concepcin en el desarrollo de programas, algo radicalmente nuevo y de una potencia y versatilidad hasta ahora inimaginables. Para el programador de la "vieja escuela" le parecer increble, sin embargo, podr comprobar, que es totalmente cierto.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

37

Trabajo prctico:
Presentacin en formato paper (2 columnas)

Historia de la POO Cloud computing Web 2.0 y web 3.0

Laboratorio

Audfonos Memoria USB

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

38

JAVA Introduccin

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

39

Creado en 1991 por Sun Microsystems (James Gosling) para dispositivos electrnicos: calculadoras, microondas y la televisin interactiva. Baja potencia de clculo Usa poca memoria Distintas CPUs Consecuencias: Lenguaje sencillo que genera cdigo reducido Lenguaje que es independiente de la plataforma

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

40

Lenguaje de programacin para computadores e Internet desde 1995. Ejecucin de Java como: Aplicacin independiente Applet (aplicacin dentro del navegador al cargar la pgina

Web) Servlet (aplicacin ejecutada en un servidor de Internet, sin interfaz grfica).

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

41

Actualmente es un Lenguaje de Programacin de propsito general Muy popular y usado para aplicaciones generales y aplicaciones web e internet, dispositivos y redes de comunicaciones como:

Servidores web Bases de datos Sistemas de informacin geogrfica (SIG) Telfonos mviles Sistemas de teledeteccin Asistentes digitales Sistemas medioambientales

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

42

Java no slo es un LP sino una plataforma completa para el desarrollo del software pues dispone de una biblioteca gigantesca de clases y aplicaciones con numerosos cdigos reutilizables. Posee un entorno de ejecucin de alta calidad y aade propiedades de gestin automtica de memoria y soporte de aplicaciones multimedia. Mas fcil de aprender pues se han eliminado algunas caractersticas complejas de la POO como herencia mltiple, punteros, sentencias goto, etc

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

43

Lectura personal:

Historia de Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

44

Mquina Virtual Java (JVM)

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

45

Java se ha creado pensando en la independencia de las plataformas y de las computadoras por ello se ha creado el concepto de Mquina Virtual Java Para que los programas escritos en Java puedan ejecutarse primero deben traducirse a un lenguaje intermedio bytecode y luego se interpretan a un lenguaje mquina especfico. El programa que traduce las instrucciones escritas en Java a bytecode es un compilador.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

46

Entonces, la JVM es una mquina hipottica que emula por software una mquina real. Es definida por una especificacin. Conjunto de instrucciones de mquina (C.O.) + Operandos Pila Memoria ... El compilador genera bytecodes (instrucciones de cdigo maquina para la JVM)

El interprete traduce y ejecuta los bytecodes para cada mquina especfica.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

47

Los programas Java son de fcil portabilidad e interdependientes de la CPU sobre las que se ejecutan. La JVM es una computadora virtual cuyo lenguaje mquina es el bytecode. Existen numerosas mquinas virtuales disponibles para un gran nmero de plataformas que permiten a los programas ser independientes de la mquina:

Un programa compilado en UNIX puede ejecutarse en


Windows 7 o Macintosh
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

48

El interprete de Java traduce instruccin por instruccin del bytecode en el tipo especfico de lenguaje mquina del CPU y a continuacin se ejecuta la instruccin, por tanto slo necesita un tipo diferente de intrprete para cada tipo de CPU En el caso de C++, el compilador traduce el cdigo completo por lo que necesita un compilador diferente para cada tipo de mquina

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

49

Los intrpretes son ms sencillos que los compiladores, aunque ms lentos. Tambin Java incluye amplias bibliotecas de clases incorporadas que vienen con los entornos de desarrollo JDK (Java Development Kit) y contienen centenares de clases integradas con millares de mtodos

JDK (Java Development Kit): programas y librerias para


desarrollar, compilar y ejecutar programas Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

50

Caractersticas de Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

51

Lenguaje de fcil uso orientado a objetos

Lenguaje compilado e interpretado


Facilita un entorno interpretado:
Velocidad de desarrollo (no de ejecucin) Portabilidad del cdigo

Ejecucin de multitareas Cambios dinmicos en tiempo de ejecucin

Seguridad del cdigo.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

52

11 caractersticas segn creadores:


i. Sencillo ii. Orientado a objetos iii. Distribuido (caractersticas de red, especialmente Internet) iv. Portable v. Interpretado vi. Robusto vii. Seguro viii. Arquitectura neutra ix. Alto rendimiento x. Multihilo (multithreaded) xi. Dinmico

Ing. Mario Urrutia Espinoza

You might also like