Download Diapositiva 1 - WordPress.com

Document related concepts

Scala (lenguaje de programación) wikipedia , lookup

Dylan (lenguaje de programación) wikipedia , lookup

Objeto inmutable wikipedia , lookup

Polimorfismo (informática) wikipedia , lookup

Programación funcional wikipedia , lookup

Transcript
Objetivos
Conocer los fundamentos de los
lenguajes y entornos de desarrollo de
software poniendo énfasis en soluciones
basadas en Java.
Introducción
Organización de una computadora
1.
2.
3.
4.
Unidades de entrada
Unidades de salida
Unidades de memoria principal
Unidad aritmética y lógica (ALU) responsable de
realizar cálculos
5. Unidad central de procesamiento (CPU) coordina y
supervisa la operación de las demás secciones
6. Unidad de almacenamiento secundario
Introducción
Sistemas operativos





Las primeras computadoras eran capaces de realizar solamente una
tarea o trabajo a la vez, a través del procesamiento por lotes (batch)
de un solo usuario.
Los usuarios asignaban sus trabajos a un centro de cómputo que los
introducía en paquetes de tarjetas perforadas, y a menudo tenían
que esperar horas, o incluso días, antes de que sus resultados
impresos regresaran a sus escritorios.
El software denominado sistema operativo se desarrolló para facilitar
el uso de la computadora.
Los primeros sistemas operativos administraban la transición entre
trabajos, incrementando la cantidad del flujo de datos que las
computadoras podían procesar.
Posteriormente se hicieron uso de técnicas de multiprogramación y
tiempo compartido.
Introducción
Computación personal, distribuida y
cliente/servidor
 Cuando las computadoras se volvieron sumamente económicas, la
gente pudo adquirirlas para su uso personal o para negocios.
 Se comenzaron a interconectar mediante redes computacionales vía
telefónica y redes de área local (LANs) dentro de una empresa.
 Esto derivó en el fenómeno denominado computación distribuida, en
donde todos los cálculos informáticos de una empresa no se
realizaban estrictamente dentro de un centro de cómputo.
 La información se comparte a través de redes de computadoras, en
donde algunas computadoras denominadas servidores almacenan
datos que pueden ser utilizados por computadoras cliente distribuidas
en toda la red, de ahí el término de computación cliente/servidor.
 Java se está utilizando ampliamente para escribir software para redes
de computadoras y para aplicaciones cliente/servidor distribuidas.
Introducción
Internet y World Wide Web
 Internet (la red global de computadoras) y World Wide Web (que
permite localizar y ver documentos basados en multimedia a través
del ciberespacio) se encuentran entre las creaciones más importantes
de la humanidad, pues se han convertido explosivamente en uno de
los principales mecanismos de comunicación en todo el mundo.
 Las aplicaciones de la actualidad deben diseñarse para permitir la
intercomunicación entre computadoras de todo el mundo,
combinando tecnologías de la computación y las comunicaciones.
 Con Java se pueden desarrollar aplicaciones que se ejecuten a través
de Internet y Web , haciendo que la información esté accesible en
forma instantánea y conveniente para todo el mundo, posibilitando
que los individuos y negocios pequeños locales obtengan una
exposición mundial, cambiando la forma en que se hacen los
negocios, asimismo brinda que los miembros de las comunidades con
intereses especiales pueden mantenerse en contacto unos con otros.
Fundamentos
Lenguajes de Programación
Los programadores escriben
instrucciones en diversos lenguajes
de programación, algunos de los
cuales comprende directamente la
computadora, mientras que otros
requieren pasos intermedios de
traducción.
En la actualidad se utilizan cientos
de lenguajes de computación, los
cuales se dividen en tres tipos
generales:
1. Lenguajes máquina.
2. Lenguajes ensambladores.
3. Lenguajes de alto nivel.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Fundamentos
Sintaxis y Semántica
Cada lenguaje tiene sintaxis y semántica:
 La sintaxis de un lenguaje de programación está relacionada con la
forma de los programas, por ejemplo, como es que las expresiones,
comandos, declaraciones, etc. son puestos juntos en un programa.
 La semántica de un lenguaje de programación está relacionada con el
significado de los programas; por ejemplo, cómo ellos se comportarán
cuando se ejecutan en una computadora.
La sintaxis de un lenguaje influye en cómo los programas son escritos por
el programador, leídos por otro programador y traducidos por el
computador.
La semántica de un lenguaje determina como los programas son
compuestos por el programador, entendidos por otros programadores e
interpretados por el computador.
Fundamentos
Visual Basic .NET
Fundamentos
Pascal
Fundamentos
Lenguaje C#
Fundamentos
Java
Fundamentos
PHP
Fundamentos
Implementación
La implementación de un lenguaje es la que provee una manera de que se
ejecute un programa para una determinada combinación de hardware y
software:
 Compilado
 Interpretado
Fundamentos
Edición, compilación y ejecución
Fundamentos
Edición de programa Java
Fundamentos
Compilación de programa Java
Fundamentos
Compilación de programa Java
Deberá incluirse en la variable de entorno PATH la ruta donde se encuentra
instalado el Java:
Fundamentos
Compilación de programa Java
Fundamentos
Ejecución de programa Java
Fundamentos
Manejo de versiones y producción
Tipos de programación
 Programación estructurada (PE)
 Programación modular
 Programación orientada a objetos (POO)
 Programación concurrente
 Programación funcional
 Programación lógica
Tipos de programación
• Programación estructurada (PE)
Diseño descendente (top-dow): el problema se descompone en etapas o
estructuras jerárquicas.
Las principales ventajas de la programación estructurada son:
– Los programas son mas fáciles de entender
– Se reduce la complejidad de las pruebas
– Aumenta la productividad del programador
– Los programas queden mejor documentados internamente.
– Un programa esta estructurado si posee un único punto de entrada
y sólo uno de salida, existen de "1 a n" caminos desde el principio
hasta el fin del programa y por último, que todas las instrucciones
son ejecutables sin que aparezcan bucles infinitos.
Tipos de programación
• Programación modular
En la programación modular consta de varias secciones dividas de forma
que interactúan a través de llamadas a procedimientos, que integran el
programa en su totalidad.
En la programación modular, el programa principal coordina las llamadas a
los módulos secundarios y pasa los datos necesarios en forma de
parámetros.
A su vez cada modulo puede contener sus propios datos y llamar a otros
módulos o funciones.
Tipos de programación
• Programación orientada a objetos (POO)
Se trata de una técnica que aumenta considerablemente la velocidad de
desarrollo de los programas gracias a la reutilización de los objetos.
El elemento principal de la programación orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen
estructura y forman parte de una organización.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o
no dependiendo del programador y las acciones del programa en ese
momento.
El polimorfismo y la herencia son unas de sus principales características y
por ello dedicaremos más adelante un artículo exclusivamente a tratar
estos dos términos.
Tipos de programación
• Programación concurrente
Este tipo de programación se utiliza cuando tenemos que realizar varias
acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un
recurso de forma simultanea.
Se trata de una programación más lenta y laboriosa, obteniendo unos
resultados lentos en las acciones.
Tipos de programación
• Programación funcional
Se caracteriza principalmente por permitir declarar y llamar a funciones
dentro de otras funciones.
Programación lógica
Se suele utilizar en la inteligencia artificial y pequeños programas
infantiles. Se trata de una programación basada en el cálculo de
predicados (una teoría matemática que permite lograr que un ordenador
basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).
Lenguajes de Programación
• Se han desarrollado cientos de lenguajes de alto nivel, pero sólo unos
cuantos han logrado una amplia aceptación:
FORTRAN
COBOL
PL/I
Pascal
Ada
BASIC
Lenguaje Fortran
• Fortran (FORmula TRANslator, Traductor de
fórmulas) fue desarrollado por IBM
Corporation a mediados de la década de los
cincuenta para utilizarse en aplicaciones
científicas y de ingeniería que requerían
cálculos matemáticos complejos.
• En la actualidad, Fortran se utiliza
ampliamente en aplicaciones de ingeniería.
Lenguaje Cobol
• COBOL (COmmon Business Oriented
Language, Lenguaje común orientado a
negocios) fue desarrollado a finales de la
década de los cincuenta por fabricantes de
computadoras, el gobierno estadounidense y
usuarios de computadoras de la industria.
COBOL se utiliza en aplicaciones comerciales
que requieren manipulación precisa y
eficiente de gran volumen de datos.
Lenguaje PL/I
• Tenía muchas de las características que más
adelante adoptaría el lenguaje C y algunas de
C++. IBM registra el nombre del lenguaje
como forma de mantener control sobre su
desarrollo, por lo que los potenciales usuarios
del lenguaje prefirieron no adoptarlo a pesar
de sus múltiples innovaciones, que incluyen
multiprocesamiento, recursión, asignación
dinámica de espacio para estructuras de
datos, procedimientos genéricos, etc.
Lenguaje Pascal
• Se diseñó para la enseñanza de la
programación estructurada en ambientes
académicos, y de inmediato se convirtió en el
lenguaje de programación preferido en la
mayoría de las universidades. Pascal carece de
muchas de las características necesarias para
poder utilizarse en aplicaciones comerciales,
industriales y gubernamentales, por lo que no
ha sido muy aceptado en estos entornos.
Lenguaje Ada
• El lenguaje de programación Ada se desarrolló
bajo el patrocinio del Departamento de
Defensa de los Estados Unidos (DOD) durante
la década de los setenta y los primeros años
de la década de los ochenta.
• Una de las características importantes de Ada
se conoce como multitarea, la cual permite a
los programadores especificar que muchas
actividades ocurran en paralelo.
Lenguaje Basic
• El lenguaje de programación BASIC
(Beginner´s All-Purpose Symbolic Instruction
Code, Código de instrucciones simbólicas de
uso general para principiantes) fue
desarrollado a mediados de la década de los
sesenta en el Dartmouth College, como un
medio para escribir programas simples.
• El propósito principal de BASIC era que los
principiantes se familiarizaran con las técnicas
de programación.
Lenguajes Java, C y C++
• Java evolucionó de C++, el cual evolucionó de
C, que a su vez evolucionó de BCPL y B que
eran lenguajes para escribir software para
sistemas operativos y compiladores.
• El lenguaje C se hizo muy popular como
lenguaje de desarrollo para el sistema
operativo UNIX.
• C++ proporciona la capacidad de una
programación orientada a objetos.
Lenguajes Visual Basic y Visual
C++, C# y .NET
• Las herramientas de desarrollo más recientes
de Microsoft forman parte de su estrategia a
nivel corporativo para integrar Internet y Web
en las aplicaciones de computadora. Esta
estrategia se implementa en la plataforma
.NET, la cual proporciona a los desarrolladores
las herramientas que necesitan para crear y
ejecutar aplicaciones de computadora que
puedan ejecutarse en computadoras
distribuidas a través de Internet.
Javascript
• JavaScript se diseñó con una sintaxis similar al
C, aunque adopta nombres y convenciones del
lenguaje de programación Java. Sin embargo
Java y JavaScript no están relacionados y
tienen semánticas y propósitos diferentes.
• Se utiliza principalmente en su forma del lado
del cliente (client-side), implementado como
parte de un navegador web
Lenguaje PHP
• Es un lenguaje de programación de uso
general de código del lado del servidor
originalmente diseñado para el desarrollo web
de contenido dinámico.
• Es un lenguaje de programación del lado del
servidor que se incorporara directamente en
el documento HTML .
• El código es interpretado por un servidor web
con un módulo de procesador de PHP que
genera la página Web resultante.
Entornos de Programación
• Llamado también IDE (integrated
development environment), se compone de
un conjunto de herramientas que han sido
empaquetadas como un programa de
aplicación, es decir,
consiste en un editor de
código, un compilador,
un depurador y un
constructor de interfaz
gráfica.
Netbeans
• Es un entorno de desarrollo integrado libre,
hecho principalmente para el lenguaje de
programación java.
• Las aplicaciones son desarrolladas a partir
de un conjunto de componentes de
software llamados módulos. Un módulo es
un archivo Java que contiene clases de java
escritas para interactuar con las APIs de
NetBeans y un archivo especial (manifest
file) que lo identifica como módulo.
Netbeans
Eclipse
• Es un entorno de desarrollo integrado de
código abierto multiplataforma para
desarrollar lo que el proyecto llama
"Aplicaciones de Cliente Enriquecido",
opuesto a las aplicaciones "Cliente-liviano"
basadas en navegadores.
• Incluye un compilador de Java interno y un
modelo completo de los archivos fuente de
Java, brindando técnicas avanzadas de
refactorización y análisis de código.
Preparando Entorno Eclipse/Java
Preparando Entorno Eclipse/Java
Preparando Entorno Eclipse/Java
Preparando Entorno Eclipse/Java
Se deberá crear un acceso directo del Eclipse.exe (Aplicación) en el Escritorio:
Ejecutando Entorno Eclipse/Java
Al ejecutar el IDE Eclipse, este solicita indicar el área de trabajo (workspace):
Ejecutando Entorno Eclipse/Java
Una vez activado el IDE Eclipse se muestra la siguiente pantalla:
Ejecutando Entorno Eclipse/Java
Para iniciar, creamos un nuevo proyecto Java:
Ejecutando Entorno Eclipse/Java
Especificamos el nombres del proyecto (Curso_01) y presionamos “Finish”:
Ejecutando Entorno Eclipse/Java
Creamos una clase dentro del proyecto “Curso_01”:
Ejecutando Entorno Eclipse/Java
Especificamos el nombre de la clase (Ejemplo01) y presionamos “Finish”:
Ejecutando Entorno Eclipse/Java
Obtenemos la clase creada:
Ejecutando Entorno Eclipse/Java
Digitamos el código fuente de la clase:
Ejecutando Entorno Eclipse/Java
Ejecutamos el programa mediante la opción “Run”:
Programación Orientada a Objetos
Analogía con el mundo real
•
Suponga que desea conducir un automóvil y para hacer que
aumente su velocidad debe presionar el pedal del acelerador.
•
Pero antes de poder conducir un automóvil, alguien tiene
que diseñarlo.
•
Por lo general, un automóvil empieza en forma de dibujos de
ingeniería, similares a los planos de construcción que se
utilizan para diseñar una casa.
Programación Orientada a Objetos
Diseño y Clases
•
Estos dibujos de ingeniería incluyen el diseño del pedal del
acelerador, para que el automóvil aumente su velocidad.
•
El pedal “oculta” los complejos mecanismos que se encargan
de que el automóvil aumente su velocidad, de igual forma
que el pedal del freno “oculta” los mecanismos que
disminuyen la velocidad del automóvil y por otro lado, el
volante “oculta” los mecanismos que hacen que el automóvil
de vuelta.
•
Esto permite que las personas con poco o nada de
conocimiento acerca de cómo funcionan los motores puedan
conducir un automóvil con facilidad.
Programación Orientada a Objetos
Construcción y Objetos
•
No se puede conducir los dibujos de ingeniería de un auto,
antes de poder conducir un automóvil, éste debe construirse
a partir de los dibujos de ingeniería que lo describen.
•
Un automóvil completo tendrá un pedal acelerador
verdadero para hacer que aumente su velocidad.
•
Pero aún así no es suficiente; el automóvil no acelerará por
su propia cuenta, así que el conductor debe oprimir el pedal
del acelerador.
Programación Orientada a Objetos
Acciones y Métodos
•
Para realizar una acción (tarea) en una aplicación se requiere
un método.
•
El método describe los mecanismos que se encargan de
realizar sus tareas; y oculta al usuario las tareas complejas
que realiza, de la misma forma que el pedal del acelerador
de un automóvil oculta al conductor los complejos
mecanismos para hacer que el automóvil vaya más rápido.
•
En Java debemos crear una unidad de aplicación llamada
clase para alojar a un método, así como los dibujos de
ingeniería de un automóvil alojan el diseño del pedal del
acelerador.
Programación Orientada a Objetos
Mensajes y Llamadas (a métodos)
Cuando usted conduce un automóvil, si oprime el pedal del
acelerador se envía un mensaje al automóvil para que realice
una tarea-hacer que el automóvil vaya más rápido.
De manera similar, se envían mensajes a un objeto; cada
mensaje se conoce como la llamada a un método, e indica a un
método del objeto que realice su tarea.
Programación Orientada a Objetos
Atributos
•
Además de las capacidades con las que cuenta un automóvil,
también tiene muchos atributos como su color, el número de
puertas, la cantidad de gasolina en su tanque, su velocidad
actual, el total de kilómetros recorridos, etc.
•
Al igual que las capacidades del automóvil, los atributos se
representan como parte del diseño en sus diagramas de
ingeniería.
•
Cada objeto mantiene sus propios atributos, por ejemplo,
cada conductor sabe cuánta gasolina tiene en su propio
tanque, pero no cuánta hay en los tanques de otros
automóviles.
Programación Orientada a Objetos
Resumen
•
Así como no podemos conducir un dibujo de ingeniería de un
automóvil, tampoco podemos “conducir” una clase.
•
De la misma forma que alguien tiene que construir un
automóvil a partir de sus dibujos de ingeniería para poder
conducirlo, también debemos construir un objeto de una
clase para poder hacer que un programa realice las tareas
que la clase le describe cómo realizar.
•
Los objetos tiene atributos que lleva consigo cuando se
utiliza en un programa.
Programación Orientada a Objetos
Resumen
•
Así como no podemos conducir un dibujo de ingeniería de un
automóvil, tampoco podemos “conducir” una clase.
•
De la misma forma que alguien tiene que construir un
automóvil a partir de sus dibujos de ingeniería para poder
conducirlo, también debemos construir un objeto de una
clase para poder hacer que un programa realice las tareas
que la clase le describe cómo realizar.
•
Los objetos tiene atributos que lleva consigo cuando se
utiliza en un programa.
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Resultados de Prueba Cuenta
Programación Orientada a Objetos
Programación Orientada a Objetos
Evaluación de la Actividad