Sei sulla pagina 1di 41

UNIVERSIDAD AUNTONOMA DE GUERRERO UNIDAD ACADEMICA DE INGENIERIA P.E.: INGENIERO EN COMPUTACION. FACILITADOR. M.C.

Valentn lvarez Hilario Tema: Introduccin de POOI

Qu es? Trmino usado cuando el software que se desarrolla: No satisface los requerimientos ni necesidades del cliente. Excede los presupuestos y horarios de tiempo establecidos.

Sntomas

Baja calidad del producto de software Tiempo y presupuesto inicial excedido. Confiabilidad cuestionable Altos requerimientos de personal para desarrollo y mantenimiento.

Razones Base inestable. Fallas en el manejo del riesgo. La complejidad del software. Soluciones

Reforzar las fases de anlisis y diseo del software. Construir un modelo sencillo, fcil de entender, compatible con

muchas herramientas de programacin y fcil de mantener

Criterios de calidad del software

EVOLUCION DE LA PROGRAMACIN:
1 Nivel Se dice que el cdigo binario es de "bajo nivel" o

"primer nivel" (porque al usar pocos signos logra muy difcilmente expresar cosas complicadas), mientras un lenguaje humano es de "muy alto nivel" (con una cantidad mayor de signos y con reglas combinatorias logra expresar con facilidad cosas muy complicadas). Todo el esfuerzo, entonces, para facilitar la comunicacin del hombre con la computadora, ha de centrarse en el desarrollo de lenguajes de mayor nivel.

2 Nivel por el hombre consiste por lo tanto en establecer la equivalencia de bloques binarios con signos de nuestro lenguaje habitual. Para permitir la programacin (secuencia de comandos), se usan pequeos conjuntos de signos ("palabras") de fcil memorizacin, con las cuales se redactan programas, por ejemplo "ADC" significar "sumar con reserva" (en ingls: "ADd with Carry").

La creacin de un lenguaje ms comprensible

3 Nivel. El avance en el desarrollo de "compiladores" e

"intrpretes" (los dos tipos de programas traductores) ha sido por lo tanto fundamental en el desarrollo de los lenguajes de "3 generacin" cuyas ventajas adems de la facilidad de aprendizaje y lectura/escritura son las facilidades de correccin, transformacin y conversin de un lenguaje a otro. Los ms antiguos son el FORTRAN (para aplicaciones matemticas y cientficas) y el COBOL (para aplicaciones de administracin y contabilidad). Con los micro-computadores naci el BASIC y el PASCAL

FECHA 1953 1954 1957 1959 1960 1960 1962 Mediado de los 60 1965 1966 1968 Finales de los 60 1970 1972 1972 1977 Finales de los 70 Principio de los 80 1985 1986 1987 1990 Principios 90 1993 1994 1995 1999

LENGUAJE FORTRAN FORTRAN FORTRAN LISP ALGOL COBOL APL APL BASIC FORTRAN ALGOL APL PASCAL PROLOG C FORTRAN MODULA-2 C++ CLIPPER CLIPPER CLIPPER FORTRAN JAVA Visual C++ DELPHI JAVA DELPHI

ACONTECIMIENTO Job Backus propone el desarrollo de un nuevo lenguaje Un equipo de IBM comienza a trabajar en el FORTRAN IBM desarrolla la primera versin El profesor John McCarthy y sus alumnos desarrolla el LISP Se renen representantes europeos y de EEUU para la creacin de un nuevo lenguaje Fue creado COBOL Se publica el libro de Kenneth Iverson A Programming Language El APL es implantado por IBM en una versin conocida como APL/360 Aparece BASIC Aparece el FORTRA IV Se implemento una nueva versin multi-proposito Est disponible para el mercado en general Niklaus Wirth disea PASCAL Se desarrolla en la Universidad de Aix-Marsailles en Francia. Dennis Ritchie crea el lenguaje C. Aparece el FORTRAN 77 Niklaus Wirth dirige el desarrollo de MODULA-2 Se desarrolla el lenguaje C++ Se crea CLIPPER Aparece CLIPPER AUTUMN'86 CLIPPER SUMMER'87 Aparece el FORTRAN 90 James Gosling y su equipo comienzan a desarrollar JAVA Se desarrolla el lenguaje Visual C++ Aparece la primera versin Se lanza al mercado JAVA Aparece Delphi 5.0 para windows 98 NT/2000

Principales lenguajes. MQUINA.


El lenguaje mquina es el nico lenguaje que entiende

directamente la computadora. Por esta razn, su estructura est totalmente adaptada a los circuitos de la mquina y muy alejado de la forma de expresin y anlisis de los problemas propia de los humanos. Esto hace que la programacin en este lenguaje resulte tediosa y complicada, requirindose un conocimiento profundo de la arquitectura fsica del ordenador.

ENSAMBLADOR.
El lenguaje ensamblador constituye el primer intento de sustitucin del lenguaje mquina por

uno ms cercano al usado por los humanos. Este acercamiento a las personas se plasma en las siguientes aportaciones:
Uso de una notacin simblica o nemotecnica para

representar los cdigos de operacin direccionamiento simblico Se permite el uso de comentarios entre las lneas de instrucciones, haciendo posible la redaccin de programas ms legibles.

BASIC.
Diseado por JG Kemeny y TE Kertz del colegio

Dartmouth en Estados Unidos. Fue concebido como lenguaje interactivo que podra ser de fcil aprendizaje y enseanza como resultado de su semejanza con el idioma ingles. Estuvo disponible en 1.965. Existen diversas versiones disponibles de BASIC, el dialecto conocido como Microsof BASIC ha sido casi aceptado como un estndar para microordenadores.

Visual Basic. Versin de BASIC de Microsoft utilizado para desarrollar

aplicaciones de Windows, que se ha vuelto popular. Es similar a QuickBASIC de Microsoft, pero no es 100% compatible con ste. Las interfaces de usuario se desarrollan llevando objetos de la caja de herramientas de Visual Basic hacia el formato de aplicacin.
Java. Java naci para intentar encontrar la solucin a un

problema. Este problema radicaba en las dificultades y costes que supona la actualizacin muy frecuente del software de microprocesadores de reducidas prestaciones que se montan en dispositivos electrnicos de bajo precio, como electrodomsticos, relojes y calculadoras.

PARADIGMA Y METODOLOGIA.

Un paradigma de programacin es una propuesta

tecnolgica que es adoptada por una comunidad de programadores cuyo ncleo central es incuestionable en cuanto a que unvocamente trata de resolver uno o varios problemas claramente delimitados.

TIPOS DE PARADIGMAS

Imperativo o por procedimientos: es considerado el ms comn y est representado, por ejemplo, por C, BASIC o Pascal Funcional: est representado por Scheme o Haskell. Este es un caso del paradigma declarativo. Lgico: est representado por Prolog. Este es otro caso del paradigma declarativo. Declarativo: por ejemplo la programacin funcional, la programacin lgica, o la combinacin lgico-funcional. Orientado a objetos: est representado por Smalltalk, un lenguaje completamente orientado a objetos. Programacin dinmica: est definida como el proceso de romper problemas en partes pequeas para analizarlos.

METODOLOGIA.
En el presente trabajo de investigacin se darn a

conocer alunas metodologas de programacin utilizadas en la creacin de softwares. Una metodologa es un conjunto de principios generales que un programador ha de seguir para desarrollar un programa.

TIPOS:
PROGRAMACIN ESTRUCTURADA PROGRAMACIN ORIENTADA A OBJETOS MODULARIZACIN PROGRAMACIN ESTRUCTURADA Postula el principio de divisin de un programa en unidades

algortmicas ms pequeas llamadas funciones o procedimientos. Una vez definidos, el programador puede invocar a un procedimiento desde otro. Tpicamente un programa estructurado se realiza diseando primeramente un conjunto de estructuras de datos, y posteriormente un conjunto de algoritmos (procedimientos) que actan sobre esas estructuras de datos.

Programacin Orientada a Objeto (OOP) Con la introduccin de sistemas operativos grficos tales

como Windows, ha surgido un nuevo concepto de programacin. Los programadores ahora disean aplicaciones a base de unir diferentes piezas de cdigo ya escrito y probado con anterioridad, cada una de estas piezas se llama "objeto". Modularizacin Descomponer un programa en un nmero pequeo de abstracciones coherentes que pertenecen al Dominio del problema y enmascaran la complejidad interna. * Existen muchas acepciones del concepto de modularidad. * Van desde una subrutina hasta la asignacin de trabajo para un programador. Todas son correctas.

Caractersticas en POO
Abstraccin: Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que un ave es tal cosa, que una silla es tal otra, etc. Cuando vamos a aplicar la POO, lo primero que debemos hacer es cumplir con una vieja mxima de guerra: Divide y Vencers. Es decir, lo que hacemos es seccionar nuestro cdigo en grupos de cdigo ms pequeo que, al unirlos, hacen el trabajo. Un buen ejemplo de abstraccin es el cuerpo humano, aunque el cuerpo es una unidad, est dividido en lo que conocemos por sistemas (el sistema respiratorio, el sistema linftico, cardiovascular, etc., etc.). Estos sistemas, a su vez estn compuestos por otros ms pequeos: los rganos, y as sucesivamente. La abstraccin nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas ms complejas.

Encapsulacin: Tambin conocida como ocultamiento. Cuando me acuesto a ver televisin no me preocupo del modo como ste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electrnica o tcnico en televisores, te pasar lo mismo: no lo sabes y no te importa; slo sabes que al presionar un botn ocurre la magia. La encapsulacin se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dndole al programador acceso slo a lo que necesita. Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervencin indeseada (t no quieres que tu mam, que no tiene ni idea de electrnica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales manualmente verdad?).

Herencia: Uno de los elementos (a mi modo de ver) ms interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las propiedades y mtodos de otra (suena a chino no? Calma, lo veremos luego con paciencia). Tratemos de explicarlo con un ejemplo: Decimos que una gallina es un ave; esto quiere decir que las gallinas tienen caractersticas comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las caractersticas comunes de todas las aves. Pero adems, resulta que un ave es un animal, lo que significa que tambin comparte caractersticas comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como animal. La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo cdigo una y otra vez, puesto que al definir que una categora (que en programacin llamaremos clase) pertenece a otra, automticamente estamos atribuyndoles las caractersticas generales de la primera, sin tener que definirlas de nuevo. (7)

Historia de los LPOO


Resumen:

Comienza a finales de los 60, comienza a cobrar significado a lo largo de los 70 e increment su popularidad a mediados de los 80, hasta nuestros das.
Aunque el inters comenz por los LPOO, cuando

comenzaron a madurar se volvi el inters a los mtodos de A/DOO.


Tecnologa de objetos: LPOO, BDOO, Mtodos

A/DOO, CASE, mtricas OO, lenguajes formales OO, ...

1964- SIMULA (Dahl y Nygaard):


comienzo de la OO

Historia de los LPOO


Se identificaba como lenguaje de simulacin Ha influido en el desarrollo de otros LPOO

1972- SMALLTALK (Kay, Goldberg, Ingalls)


Simula + LISP (sin tipos) -> LPOO puro Caractersticas de un LPOO [Byte81]: Todo es un objeto.
Programa = cjto de objetos que se comunican mediante

mensajes
Todo objeto es instancia de una clase (tiene un tipo).
La clase es el repositorio de comportamiento asociado con un objeto Las clases se organizan en jerarquas de herencia

Historia de los LPOO Aos 70-80


orientado a objetos era sinnimo de bueno.

Soportar el concepto de objeto no es suficiente.


BASADO EN OBJETOS + clases + herencia de clases

Ada, Modula 2 (1979)

BASADO EN CLASES

CLU (1974)

ORIENTADO A OBJETOS

Smalltalk (1972)

[Wegner87]

Historia de los LPOO - Aos 80


Proliferacin de LPOO

Clasificacin atendiendo al origen:


Hbridos: Basados en C: o o Basados en Pascal: o o Basados en Lisp: o Pros: o o C++ Objective-C 1985 1983 B. Stroustrup Brad Cox y Tom Love Apple con Wirth Digital y Olivetti

Object Pascal 1985 Modula-3 1988 CLOS Smalltalk Eiffel 1988 1972 1985

Alan Kay Bertrand Meyer

Historia de los LPOO Aos 90


Aplicaciones centradas en el web

1995 JAVA- SUN


comportamiento en pginas HTML Tecnologa de implementacin: bytecode+MV

2000 C# - Microsoft
Plataforma .NET Mquina virtual para conseguir la portabilidad

Combina Java y C++


Son ms de 20 lenguajes los que estn en proceso de

migrarse a la plataforma .NET

El futuro de la OO
Entornos de software futuros deben contener tres tecnologas:

Orientacin a objetos redes Bases de datos Tecnologa de objetos distribuida: RMI, CORBA

COMPARACION DE LOS MAS POPULARES LPOO


En este apartado se va a comparar Java con los lenguajes C++ y Smalltalk (primer lenguaje que presentaba un modelo de objeto).
Caracterstica Java Smalltalk C++

Sencillez Robustez Seguridad Interpretado Dinamicidad Portabilidad Neutralidad Garbage Colection Excepciones

S S S S S S S S S

S S Algo S S Algo Algo S S

No No No No No No No No Algunas

Representacin

Alta

Media

Alta

La bebida preferida de los programadores

Proyecto del Lenguaje en Programacin en Java


Abril 1991: Proyecto Green (Sun) software para dispositivos

electrnicos inteligentes y televisin interactiva. Se trataba de desarrollar un entorno de operacin fiable, portable y eficiente. El resultado: Lenguaje Oak (James Gosling) Principio 1994: El equipo se reduce ante el escaso crecimiento del mercado PDA y STB, y tras perder acuerdos con Time Warner y 3DO, se reorienta hacia WWW:

Un lenguaje de programacin orientado a objetos

desarrollado por Sun Microsystems Encapsulacin, herencia y polimorfismo Fuertemente tipado Gestin automtica de la memoria (recogida de basura) Soporte para concurrencia (multi-hilo) Gestin de excepciones Constructores independientes de la arquitectura del Procesador acompaado por un conjunto de bibliotecas
(packages, conjuntos de clases) Desarrollo de interfaces grficas de usuario (AWT, Swing) Conectividad (sockets, RMI, IDL, JDBC) Utilidades (Vector, Stack, Hashtable, Date, etc.)

Apropiado para Internet


Ejecutable en mltiples plataformas Fcil de distribuir Seguridad Soporte para interaccin con el usuario: Grficos Tipos de datos arbitrarios Descarga el servidor

Segn Sun Microsystems:


Sencillo, Orientado a objetos, y Familiar Robusto y Seguro Independiente de la arquitectura y portable Alto rendimiento

Interpretado, Concurrente, y Dinmico

Java e Internet:
Un nuevo paradigma de software Software bajo demanda: El software se carga de la red cuando es necesario lo que es estrictamente necesario sin necesidad de instalacin Se puede controlar el uso del software No hacen falta actualizaciones software individuales Las versiones nuevas reemplazan a las anteriores de forma invisible No hay problemas de configuracin especficos del HW Codifica una vez, ejecuta en varias plataformas

La Maquina Virtual de Java (MVJ)


Java se ejecuta en un computador simulado Portabilidad

Proteccin
Para portar todo el cdigo Java, portar la MVJ Otras arquitecturas de MV:

UCSD P-system, Apple Newton, Smalltalk, Emacs, ...


La mquina virtual Java es sofisticada: Multihilo (Threads) Recogida de basura

Sistema de ejecucin de Java


E/S y comunicaciones Class InputStream y OutputStream Encadenamiento y herencia de flujos (Stream) Class URL Class Socket Otras utilidades Class String Colecciones: Vector, Stack, HashTable Recogida de basura Comprobacin de rangos

Java Development Kit (JDK)


Bibliotecas de clases Java Herramientas bsicas javac -- compilador Java -> bytecodes java -- intrprete Java jdb -- depurador javah -- crea ficheros de cabecera y stubs para conectividad con C javap -- desensamblador bytecodes -> Java javadoc -- genera documentacin de API en formato HTML a partir de cdigo fuente Java appletviewer -- permite ejecutar applets sin un navegador

Herramientas RMI rmic -- genera clases stub y skeleton para objetos Java que implementan la interfaz java.rmi.Remote rmiregistry -- arranca un objeto registrador en un puerto dado serialver -- devuelve el serialVersionUID para una o ms clases Herramientas de internacionalizacin native2ascii -- convierte ficheros no-Unicode Latin-1 a ste Herramienta JAR jar -- combina varios ficheros en un fichero Java Archive (JAR) Herramienta de firma digital javakey -- genera firmas digitales

Java se parece a C++


Java y C++ Java se parece a C++ Sin algunas cosas Punteros, direcciones, estructuras (struct y union), preprocesado, herencia mltiple, sobrecarga de operadores, tipos enumerados (enum), tipos sin signo (unsigned), goto, variables y funciones globales Ms seguro Recogida de basura, interfaces, paquetes, arrays con lmites, soporte para concurrencia y sincronizacin Aspectos recientes de C++ Excepciones uniformes Informacin de tipos en tiempo de ejecucin Tipo boolean Casting seguro

El cdigo Java es ms sencillo recogida de basura Las facilidades en tiempo de ejecucin ms avanzadas Las interfaces simplifican la jerarqua de herencia El cdigo Java es ms robusto Verificacin al cargar y comprobacin en tiempo de ejecucin Arrays seguros Compilador estricto e inteligente Menos oportunidades para los ms audaces Imposible realizar aritmtica de punteros No es posible hacer mejoras especficas para una plataforma No es cierto eso de que las aplicaciones Java tengan que ser ms lentas que las C++

Potrebbero piacerti anche