Sei sulla pagina 1di 48

lectrnica 2 Programacin E

N I C U L O V E DE LOS LENGUAJES DE C A M A R G O R P IN
Tema 1 Fase 1

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Agenda

1 2 3 4

INTRODUCCIN

EVOLUCIN DE LOS LENGUAJES DE PROGRAMACIN

PROGRAMACIN ORIENTADA A OBJETOS

JAVA

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

1 2 3 4

Introduccin
Evolucin de los lenguajes de programacin

Programacin orientada a objetos

Java

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 Pascal Java

C++ Delphi

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. Ya se sabe qu es un objeto comn y cmo manipularlo. Si entiende la similitud entre los objetos del mundo fsico y los informticos, la POO se har ms sencilla. 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

1 2 3 4

Introduccin

Evolucin de los lenguajes de programacin

Programacin orientada a objetos (POO)

Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Los lenguajes de programacin se han desarrollado en base a una idea: 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 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. 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 de 0 y 1 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

Lenguaje Mquina
Instrucci n 0000 1000 0000 0100

Microprocesador

0000 MOV AX, 04 0002 MOV BX, 05 0004 ADD AX, BX : : Programa a bajo nivel construido con nemnicos

0000 0000 0000 0010

0000 1001 0000 0101

0000 0000 0000 0100 :

1000 0000 :

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 lenguajes de alto nivel es ms rpido, simple y resulta ms fcil detectar y corregir errores, debido a:

Cada instruccin 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 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 Instrucci n 0000 1000 0000 0100 0000 0000 0000 0010 0000 1001 0000 0101 0000 0000 0000 0100 : 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 lenguaje 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 rpido. 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:

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):

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.

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

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

Se intenta que el programador pueda hacer


programas cada vez ms extensos sin perderse en un entramado de lneas de cdigo interdependientes. Los saltos estn altamente desaconsejados

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

19

Junto con la programacin estructurada aparece el


concepto de funcin, el cual permite construir programas ms amplios con menor esfuerzo. La idea es simple: muchas veces se realizan procesos que se repiten y en los que slo cambia algn factor. El proceso se trata como un subprograma al que se llama cada vez que se necesita, y cada vez que se llame puede cambiarse ese factor:

Se reduce el margen de error al reducir el nmero de


lneas que necesita el programa

De haber algn fallo en el proceso, el error queda


circunscrito al trozo de cdigo de la funcin.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

20

Las funciones son cajas negras que reciben y


devuelven valores. Solo hay que programarlas una vez, probarlas por separado y comprobarlas que funcionan. Una vez terminadas, puede olvidarse de cmo se hicieron y usarlas cuando quiera. Tambin aparece el concepto de variables de mbito reducido. Antes, cualquier variable usada, era conocida en todo el programa generando una infinidad de variables. 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 conflicto.

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. Esto es posible 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, Clipper, etc. En estos lenguajes hay que establecer hechos (datos), reglas para el manejo de esos datos y hay que indicarle 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 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 predicadospara 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 encarga 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 %% declaraciones padrede('juan', 'maria'). % juan es padre de maria Inteligencia Artificial.
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 gran experiencia. Estas tcnicas son independientes del lenguaje en que trabajemos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

28

Un lenguaje de programacin, es un conjunto de


instrucciones entendibles directamente o traducibles al lenguaje del computador. Combinando estas instrucciones se realizan programas. 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 no es en absoluto declarativa

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

29

1 2 3 4

Introduccin

Evolucin de los lenguajes de programacin

Programacin orientada a objetos (POO)

Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

30

LA

POO:

NO ES un sistema de comunicacin con


programas basados en mouse, ventanas, iconos, etc.

Como normalmente los lenguajes de POO


suelen presentar estas caractersticas y habitualmente estos entornos suelen desarrollarse con tcnicas de POO, algunas personas tienden a identificar POO 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 est por venir, aunque estos, incluirn facilidades para el manejo de objetos.

En los lenguajes que prevn 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 permiten incrementar el proceso de produccin de software, aumentando la productividad y permitiendo abordar proyectos de mucha mayor envergadura. Con estas tcnicas, aseguramos la reusabilidad del 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

En trminos de POO, si se quiere construir un objeto que comparte ciertas cualidades con otro ya creado, no se tiene que volver a crearlo desde el principio; simplemente, se define qu se quiere usar del antiguo en el nuevo y qu nuevas caractersticas tiene el nuevo objeto. Con POO se puede incorporar objetos que otros programadores han construido y, adems, se puede modificar los comportamientos de los objetos construidos por otros programadores sin tener que saber cmo los han construido.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

36

Trabajo prctico:
Presentacin en formato IEEE paper (2 columnas)

Historia de la POO Cloud computing Web 2.0 y web 3.0

Laboratorio

Memoria USB

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

37

1 2 3 4

Introduccin

Evolucin de los lenguajes de programacin

Programacin orientada a objetos (POO)

Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

38

Introduccin

Creado en 1991 por Sun Microsystems (James Gosling) para dispositivos electrnicos: calculadoras, microondas y 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

39

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

40

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

41

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

42

Mquina Virtual JAVA (JVM)

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

43

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

44

Compilador

Intrprete

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

45

Los programas Java son de fcil portabilidad e independientes 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

46

El interprete de Java traduce instruccin por instruccin el bytecode en el tipo especfico de lenguaje mquina del CPU y a continuacin se ejecuta la instruccin, por tanto slo necesita un tipo 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

47

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 libreras


para desarrollar, compilar y ejecutar programas Java

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

48

Caractersticas de Java

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

Potrebbero piacerti anche