Introducción a la Programación Programación I ¿Qué es Programación? • Un proceso por el cual se escribe (en un lenguaje de programación), se prueba, se depura y se mantiene el código fuente de un programa informático. ¿Qué es Programación? • Para construir programas, las personas usan lenguajes que son similar al idioma humano. Los resultados se traducen en código de máquina que las computadoras entienden. Lenguaje de Programación • Es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina. La Evolución de los lenguajes de la Programación • Los lenguajes de programación entran en tres categorías extensas: Lenguajes de máquina Lenguajes de ensamblado Lenguajes altos o de nivel . La Evolución de los lenguajes de Programación: Lenguaje de Máquina • Lenguaje de máquina (idiomas de la primerageneración) es el tipo más básico de lenguaje de la computadora y consiste en series de números del hardware de la computadora . • Los Tipos diferentes de uso en el hardware en el código de la máquina son diferentes. Por ejemplo, las computadoras de IBM usan lenguaje de máquina diferente que las computadoras de las Apple. La Evolución de los lenguajes de la Programación: Lenguaje de ensamblado • Lenguaje de ensamblado (idiomas de la segundageneración) es sólo algo más fácil que trabajar con el lenguaje de máquina. • Para crear programas en lenguaje de ensamblado, diseñadores acostumbran frases en ingles para representar series de números. • El código se traduce entonces en el código del objeto y usa a un traductor llamado ensamblador. Código de ensamb le Ensamblad or Código de Objeto La Evolución de los lenguajes de la Programación : Lenguajes altos o de nivel. • Los lenguajes de alto nivel son más poderosos que el lenguaje de ensamble y le permiten al programador trabajar en un ambiente mas agradable. • Los lenguajes de la programación de alto nivel son dividido en tres "las generaciones," cada uno más poderoso que el último: ● Lenguaje de 3ra. Generación ● Lenguaje de 4ta. Generación ● Lenguaje de 5ta. Generación La Evolución de los lenguajes de la Programación : Lenguajes de 3a. Generación. • Consta de la gama de lenguajes de programación para ámbitos computacionales donde se logra un alto rendimiento con respecto a lenguajes de generaciones anteriores. • Dichos lenguajes son utilizados por especialistas, programadores, y otros para desarrollar programas y sistemas que requieren de un procedimiento especifico para la pc. FORTAN C COBOL C++ BASIC Java ActiveX son : • Los Pascal lenguajes 3GLs siguientes La Evolución de los lenguajes de la Programación : Lenguajes de 4a. Generación. • Son lenguajes que se relacionan menos con procedimientos y que son aun mas parecidos al ingles que los lenguajes de tercera generación. • Algunas características incluyen capacidades de consulta y base de datos, de creación de códigos y capacidades gráficas. Ejemplos Visual C++, Visual Basic, Power Builder, Forte, Delphi y muchos otros. La Evolución de los lenguajes de la Programación : Lenguajes de 5a. Generación. • Alrededor de la mitad 1998 surgieron grupos de herramientas de lenguajes de quinta generación, los cuales combinan la creación de códigos basadas en reglas, la administración de reutilización y otros avances. • Programación basada en conocimiento. Método para el desarrollo de programas de computación en el que se le ordena ala computadora realizar un propósito en vez de instruirla para hacerlo. Ejemplos: C#, Haskell, Modula 3. Lenguajes Orientados a Objetos • Simula • Smalltalk • C++ • Delphi • Java • C# BASIC, Visual Basic, Visual C++, C# y . NET • BASIC, fue desarrollado a mediados de los sesenta; su propósito principal era que los principiantes se familiarizaran con las técnicas de programación. • Visual Basic, se introdujo en 1991 para simplificar el desarrollo de aplicaciones para Windows. BASIC, Visual Basic, Visual C++, C# y . NET • Visual Basic .NET, ofrece una orientación mejorada a objetos. Posee una poderosa biblioteca que incluye componentes de software reutilizables. • Visual C++, es una implementación de C++. Comparte la misma biblioteca de componentes que VB. BASIC, Visual Basic, Visual C++, C# y . NET • C# fue desarrollado en Microsoft, específicamente para la plataforma .NET como un lenguaje que permitiera a los programadores migrar fácilmente a .NET Historia: OO • OO (Orientación a Objetos): desarrollo y modelización de software que facilita la construcción de sistemas complejos a partir de componentes. Se modela el mundo real tan fielmente como sea posible. Al comparar la OO y las Tradicionales (Procedimentales estructuradas) hay una reducción de código como mínimo del 40%. Historia: Desarrollo Tradicional frente al OO Tradicional OO Diseño Descendente. Ascendente. Lenguajes Estructurados. OO. Se Centra en Operaciones. Los Objetos Reales. Idea Clave Descomponer Reflejar el mundo una Aplicación en real mediante el programas ensamblado de más pequeños. Clases. Historia: Evolución en cuanto conceptualizacion Programación lineal: Cada línea de programa debe ir precedida de un identificador (una etiqueta) para poder referenciarla, para este ejemplo hemos utilizado números, aunque podría utilizarse cualquier otro identificador: 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: Historia: Evolución en cuanto conceptualizacion Programación estructurada. Hacer una variable igual a 0 Mientras que sea menor que 100 -> sumar 1 y mostrarla Lo importante aquí, es que cuando escribimos un programa usando las técnicas de programación estructurada, los saltos están altamente desaconsejados, por no decir prohibidos; en cambio en BASIC, por ejemplo, son muy frecuentes (todos conocemos el prolífico GOTO <nLínea>), lo que no es nada conveniente si queremos entender algo que escribimos hace tres meses de forma rápida y clara. Historia: Evolución en cuanto al enfoque La evolución de los lenguajes de programación, en cuanto a enfoque es también una evolución conceptual, pero ésta es tan profunda que supone un cambio drástico en cuanto al modo de concebir el tratamiento de la programación. En este sentido, y dependiendo del autor a quien se consulte, existen dos o tres enfoques diferentes: Programación procedural Programación declarativa Programación orientada a objetos Historia: Programación 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 decisión y tenemos que decirle al lenguaje cómo alcanzar el objetivo que se persigue. Es decir, donde buscar la información, cómo manipularla, cuando parar, etc. Historia: Programación Declarativa Los lenguajes más conocidos que existen hasta ahora, salvo PROLOG, son todos procedurales, éste es declarativo. En ProLog no programamos, sino que declaramos 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, por otro lado, el corazón de un Sistema Experto. Probablemente de este tipo de programas -los más famosos de la Inteligencia Artificial-, habrá usted oído hablar. Historia: Programación Orientada a Objetos La OOP es un conjunto de técnicas. La OOP es casi 100% procedural y, desde luego, no es en absoluto declarativa. Historia: OO Las 4 Propiedades más fuertes de OO son: • Abstracción: Vista externa del Objeto, con el fin de separar el Acceso a los Objetos, de su implementación interna. • Encapsulación: Propiedad que asegura que el contenido de la información de un objeto está oculto al mundo exterior. • Modularidad: Permite dividir una aplicación en partes más pequeñas llamadas módulos, tan independientes como sea posible. • Jerarquía: Ordena la Abstracción con la Herencia. O La jerarquía es un ordenamiento de abstracciones - Abstracción <- Encapsulamiento <- Abstracción y encapsulamiento son conceptos complementarios: la abstracción enfoca la vista externa de un objeto, y el encapsulamiento (ocultamiento de la información) previene que los clientes vean la parte interna, donde el comportamiento de la abstracción es implementada. Modularidad <- Jerarquía Las abstrac ciones forman una jerarquí a <- ¿Qué es un Objeto? • Objeto:Un objeto es una abstracción de un conjunto de cosas del mundo real de tal forma que: ● ● Todos los elementos del conjunto (las instancias) tienen las mismas características. Todas las instancias están sujetas a y conforman las mismas reglas. Mundo Real Softwar e Abstracció ¿Qué es un Objeto? • Características de los objetos: ● Identidad ● Clasificación ● Herencia ● Polimorfismo • Estas características pueden ser usadas en forma independiente, pero juntas se complementan. Identidad Una bicicleta roja antena parabólica Mi Computadora Doris caballo Variable Dirección unCredito unDebito unaCuenta unaCuentadeAhorros 10001324 54647875 87896545 87020486 Una tabla de símbolos Residencia de Doris cuenta bancaria Clasificación Vehícu lo Animal Punto Figura (1,3) (2,2) (2,1) (5,2.5) Clases y Objetos Class Template Objetos Clase • Es la plantillas que describe a un conjunto de objeto, con los mismos ● atributos (variables) ● métodos (funciones) ● relaciones • Un objeto es una instancia de una clase. • Los objetos creados a partir de una clase, ● Tienen una estructura idéntica, ● Pero identidad propia Clase • Clase --> TDA ● Tipo de Dato Abstracto • Es la definición de un nuevo tipo de dato • Un objeto es la variable de dicho tipo • Ejemplo: ● Clase: Perro ● Objetos: Balto, Firulais, etc Ejemplo de Clase Clase Bicicleta Atributos Abstraídos en Tamaño de frame Tamaño de llanta Material ... Métodos Cambio Mover Frenar... Objetos bicicletas Representación de una clase Se utiliza el UML es un lenguaje estándar que sirve para escribir los planos del software, puede utilizarse para visualizar, especificar, construir y documentar todos los artefactos que componen un sistema con gran cantidad de software. Diagramas de Clases: Muestran un conjunto de clases, interfaces y colaboraciones, así como sus relaciones. Estos diagramas son los más comunes en el modelado de sistemas orientados a objetos y cubren la vista de diseño estática o la vista de procesos estática (sí incluyen clases activas). Ejemplo de Clase Java UML Alumno public class Alumno { private String nombre; private String domicilio; - nombre:: String - domicilio: String public Alumno(String n, String d) { } public void setNombre (String n) { } public String getNombre() { } (n:String, d:String) + Alumno + setNombre (n:String):void + getNombre () :String } Instancia • Una instancia es un objeto creado a partir de una clase. • La clase describe la estructura de la instancia (información y comportamiento), mientras que el estado actual de la instancia es definido por las operaciones ejecutadas. Instancia Alumno nombre: domicilio : String : String -+ Alumno (n:String, d:String) + setNombre (n:String):void + getNombre () :String Creación de instancias u objetos a partir de la clase Alumno: Alumno alumno1 = new Alumno(“Juan Perez”, “Las Peñas”); Alumno alumno2 = new Alumno(“Abel Garcia”, “Los ceibos”); Alumno alumno3 = new Alumno(“Jose Lopez”, “Centenario”); alumno1: Alumno nombre = Juan Perez domicilio = Las Peñas alumno2: Alumno nombre = Abel García domicilio = Los ceibos alumno3: Alumno nombre = Jose Lopez domicilio = Centenario Ventajas de la Programación Orientada a Objetos Las ventajas más importantes de la programación orientada a objetos son las siguientes: el • Mantenibilidad (facilidad de mantenimiento). Los programas que se diseñan utilizando concepto de orientación a objetos son más fáciles de leer y comprender y el control de la complejidad del programa se consigue gracias a la ocultación de la información que permite dejar visibles sólo los detalles más relevantes. • Modificabilidad (facilidad para modificar los programas). Se pueden realizar añadidos o supresiones a programas simplemente añadiendo, suprimiendo o modificando objetos. • Resusabilidad. Los objetos, si han sido correctamente diseñados, se pueden usar numerosas veces y en distintos proyectos. • Fiabilidad. Los programas orientados a objetos suelen ser más fiables ya que se basan en el uso de objetos ya definidos que están ampliamente testados. Introducción a Java • Lenguaje de Programación Orientado a Objetos • Características ● Independiente de la plataforma ● ● ● ● ● Compilador no genera código ejecutable nativo a la máquina donde se ejecuta Compilador produce un formato especial llamado byte codes Para que bytescodes puedan ejecutarse en una máquina específica se necesita un intérprete en tiempo de ejecución. El intérprete es el que genera código de lenguaje de máquina entendido por la máquina. Ambiente de ejecución normalmente se conoce como Java Virtual Machine (JVM). Recolector de basura. Estructura de programas en Java Cada programa ejecutable en java consiste en una clase Aplicación Al menos una de las clases debe contener el método main Declaración de método main debe ser método estático Metodo asociado a clase no objeto Declaración public, cualquiera puede invocarlo Palabras clave en Java abstract boolean break byte case catch char class const continue default if do implements double import public else instanceof extends int final interface finally long float native for new goto package private this protected throw throws return short static strictfp super transient try void volatile while switch synchronized Palabras claves tienen significado especial y no pueden usarse como identificadores de variables ni clases ni métodos Constantes Declaración ● public static final <type> <name> = <value> ; Ejemplos public static final int DAYS_IN_WEEK = 7; public static final double INTEREST_RATE = 3.5; public static final int SSN = 658234569; Control de flujo Ciclos for(), while(), do-while() Condicionales If – else switch (expresion){ case n: sentencias; case m: sentencias; … default: sentencias; } Objetos Instancias de tipos de datos complejos llamados clases Entidad que contiene datos y comportamientos Existen variables, que almacenan datos dentro de un objeto Existen métodos dentro de objeto que representan su comportamiento Creación de objetos en Java mediante uso de keyboard new