Ejemplo Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. El sistema debe poder mostrar información de una figura.

Slides:



Advertisements
Presentaciones similares
Clases en C++.
Advertisements

Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Funciones y recursividad
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Orientación a Objetos con Java SE
Programación I Teoría IV
INFORMATICA I Funciones CLASE 13.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
Algoritmos y Estructuras de Datos
Programación Orientada a Objetos en Java
SOBRECARGA DE FUNCIONES
DIAGRAMA DE CLASE.
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
FUNCIONES EN C.
Programación I Teoría II
Herencia e Interfaces.
Modificadores.
Estructura de Datos En C++
Tema 1: Introducción Ejemplo
Introducción a clases Programación Orientada a Objetos.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Diseño de algoritmos “Punteros”
Programación Orientada a Objetos
Tema 9 Estructuras.
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
FUNCIONES EN C.
El lenguaje de programación Java
Capítulo 1 “Elementos de Programación”
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación avanzada en Java Miguel Ángel Corella 23 de Septiembre de 2005.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Trazado. 1 Intercambio sin error #include void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b);
Definición de subprogramas en C
PROGRAMACIÓN MULTIMEDIA
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
INTRODUCCION A LA PROGRAMACION
LENGUAJE “C” Programación.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
HERENCIA.
PROGRAMACIÓN IV INTRODUCCIÓN.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Corporación Universitaria del Caribe CECAR Fundamentos de programación II.
ESTRUCTURAS DE DECISION MULTIPLE
TIPOS DE DATOS PARCIAL III FUNCIONES. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores.
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
Herencias Conceptos básicos i
1 Estructuras de Datos Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
Estructuras Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 25.
Taller de Java Universidad de los Andes
Transcripción de la presentación:

Ejemplo Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. El sistema debe poder mostrar información de una figura y calcular su área. Se manejarán varios tipos de figuras entre ellas, círculos y rectángulos. Dos aproximaciones –Sin utilizar las técnicas de la POO Se utilizará código C para la descripción del programa –Utilizando las técnicas de la POO Se utilizará un pseudocódigo para describir el programa

Sin POO (I) #define Tcirculo 1 #define TRectangulo 2 typedef struct circulo{ short tipo; //tipo de figura double x, y;//centro double radio;//radio }Circulo; typedef struct rectangulo{ short tipo; //tipo de figura double x1, y1;//esquina ini double x2, y2;//esquina fin } Rectangulo; typedef union figura{ short tipo; /*tipo de figura*/ Circulo cir; /*circulo */ Rectangulo rec;/*rectangulo*/ } Figura; /*Prototipo de funciones*/ double area( Figura *p_fig); void muestra( Figura *p_fig);

Sin POO (II) /*Funcion que calcula el area*/ double area( Figura *p_fig){ double varea; /*se maneja el area dependiendo del tipo*/ switch(p_fig->tipo){ case TCirculo: varea = M_PI * p_fig->cir.radio * p_fig->cir.radio; break; case TRectangulo: varea = (p_fig->rec.x2 * p_fig-> rec.x1) * (p_fig->rec.y2 * p_fig-> rec.y1); break; default: printf(“Figura desconocida\n”); varea = -1; } return varea; }

Sin POO (III) //Funcion que muestra la figura double muestra( Figura *p_fig){ printf(“Figura: ”); switch( p_fig->tipo){ case TCirculo: printf(“Circulo de radio %f y de centro(%f,%d)\n ”, p_fig->cir.radio, p_fig->cir.x, p_fig->cir.y); break; case TRectangulo: printf(“Rectangulo esquina (%f,%f) y (%f,%f) \n ”, p_fig->rec.x1, p_fig->rec.y1, p_fig->rec.x2, p_fig->rec.y2); break; default: printf(“Figura desconocida\n”); }

Sin POO (IV) int main(){ int i; Figura a[2]; //array con dos figuras //inicializa a[0] con un rectangulo a[0].tipo = Trectangulo; a[0].rec.x1 = 80.0; a[0].rec.y1 = 30.0; a[0].rec.x2 = 300.0; a[0].rec.y2 = 50.0; //inicializa s[1] con un circulo a[1].tipo = TCirculo; a[1].cir.radio = 80.0; a[1].cir.y = 40.0; a[1].cir.x = 30.0; //Calculo de áreas for(i = 0; i < 2; i++) printf(“Area figura[%d]=%f\n”,i, area(&a[i])); for(i = 0; i < 2; i++) muestra(&a[i]); return 0; }

Sin POO (y V) Añadiendo una nueva figura. Queremos incorporar triángulos. –Añadir el tipo de Triangulo #define Ttriangulo 3 typedef struct Triangulo{ short tipo; //tipo de figura double x1,y1;//coordenada pto 1 double x2,y2;//coordenada pto 2 double x3,y3;//coordenada pto 3 }Triangulo; –Añadirlo a la unión de figuras typedef union Figura{ short tipo; Circulo cir; Rectangulo rec; Triangulo tri; }Figura; –Modificar las funciones muestra y área

Con POO (I) Creamos una clase abstracta Figura. Esta clase soporta los métodos muestra y area Clase Figura Métodos de instancia publicos muestra() area() Fin clase Figura::muestra(){ printf(«Debe implementarla la subclase»); } Figura::area(){ printf(«Debe implementarla la subclase»); return 0.0; }

Con POO (II) Creamos Circulo como una subclase de Figura. Clase Circulo hereda Figura Variables de instancia radio x, y; Fin clase /* Implementación de muestra para Circulo*/ Circulo::muestra(){ printf(«Circulo de radio %f y de centro (%f,%f)\n»,radio,x,y); } /* Implementación de area para Circulo*/ Circulo::area(){ return M_PI * radio * radio; }

Con POO (III) Creamos Rectangulo como una subclase de Figura. Clase Rectangulo hereda Figura Variables de instancia x1, y1, x2, y2; Fin clase // Implementación de muestra para Rectangulo Rectangulo::muestra(){ printf(«Esquinas del Rectangulo (%f, %f) y (%f,%f)\n», x1,y1, x2,y2); } // Implementación de area para Rectangulo Rectangulo::area(){ return fabs( (x2-x1)*(y2-y1)); }

Con POO (IV) int main(){ int i; Figura s[2]; //Inicialización de un rectangulo s[0] = Rectangulo(80,0,30,0,300,0,50,0); //Inicialización del circulo s[1] = Circulo(80,0,40,0,30,0); //Calculo de las áreas for(i = 0; i<2 ; i++) printf(«Area figura[%d]=%f\n»,i, s[i].area()); //Mostrando figuras for(i = 0; i<2 ; i++) s[i].muestra(); return 0; } Este código no es C++. Está subrayado lo que se debe matizar.

Con POO (V) Añadiendo una nueva figura. Queremos incorporar Triangulo. Clase Triangulo hereda Figura Variables de instancia x1, y1, x2, y2, x3, y3; Fin clase Triangulo::muestra(){ printf(«... } Triangulo::area(){ return... }

Introducción al lenguaje Java

Indice 1. Introducción histórica. Origen de Java. 2. Características de Java. 3. La máquina virtual de Java. Bytecode. 4. Palabras reservadas. 5. Introducción a la programación orientada a objetos. 6. Diferencias entre C/C++ y Java. 7. Ejemplo: “Hello world”, en el modelo de aplicación clásico.

Lenguajes de programación Modelo computacional: colección de valores y operaciones Tipos de modelos computacionales (Paradigma): imperativo, funcional, lógico … Computación: aplicación de una secuencia de operaciones a un valor para obtener otro valor Programa: especificación de una computación Lenguaje de programación: notación para escribir programas Sintaxis de un lenguaje de programación: estructura o forma de los programas Semántica de un lenguaje de programación: relaciones entre un programa y un modelo de computación Pragmática de un lenguaje de programación: grado de éxito con el que un programa cumple sus objetivos tanto en su fidelidad con el modelo de computación subyacente como su utilidad para los programadores

Introducción histórica(I) CPL  BCPL  B  C  C++  Java CPL (Combined Programming Language): 1960, basado en ALGOL 60. BCPL (Basic Combined Programming Language ): Martin Richards, B: Ken Thompson y Dennis Ritchie, reemplazado por C (1969). C: Bell Telephone Laboratories (1972) por Dennis Ritchie para usarlo con Unix. ( Propósito general, Estructurado por bloques, Imperativo, Procedimientos) C++: Bjarne Stroustrup (1979) Bell Labs.

Java Sun Microsystems (1995) Sintaxis deriva de C y C++. Orientado a Objetos Compilado a bytecode. Ejecutado sobre cualquier Java virtual machine (JVM). Sobre cualquier arquitectura. Desde 1995 Sun desarrolla e implementa compiladores, máquinas virtuales y librería de clases.

Características de Java Simple y seguro Portable OOP Robusto Multihilo Neutral Interpretado Rendimiento Distribuido dinámico

Interprete & Compilador Un Intérprete es un traductor que toma el programa fuente y lo traduce y ejecuta lína a línea. Basic, Java, Smalltalk. Un Compilador de un programa que traduce los programas escritos en lenguaje de alto nivel a lenguaje máquina. C, C++, Pascal, Fortran, Cobol. Programa Fuente Intérprete Traduc.y ejec. Línea a línea Programa Fuente Compilador Programa Objeto

La máquina virtual de Java: Bytecode.

Application Programming Interface (API) Una Application Programming Interface (API) es un conjunto de funciones, procedimientos o clases que un sistema operativo, librería o servicio proporciona para soportar peticiones realizadas por un programa de ordenador. Son dependientes de lenguaje, ya que están disponibles solo en un lenguaje de programación particular. Utilizan la sintaxis y elementos de los lenguajes de programación para hacer que sea adecuada para usarla en un contexto particular. Son independientes del lenguaje, ya que están escritas en una forma en que pueden ser llamadas desde diferentes lenguajes de programación. Esta característica se conoce como API al estilo servicio, ya que no limita a un proceso particular o sistema y está disponible como una llamada a procedimiento remoto.

La máquina virtual de Java

Palabras reservadas (I) abstract Especifica la clase o método que se va a implementar más tarde en una subclase. boolean Tipo de dato que sólo puede tomar valores true o false. break Sentencia de control para salirse de los bucles. byte Tipo de dato que soporta valores en 8 bits. byvalue Reservada para uso futuro. case Se utiliza en las sentencias switch para indicar bloques de texto. cast Reservada para uso futuro. catch Captura las excepciones generadas pro las sentencias try. char Tipo de dato que puede soportar caracteres Unicode sin signo en 16 bits. class Declara una clase nueva. const Reservada para uso futuro. continue Devuelve el control a la salida de un bucle. default Indica el bloque de código por defecto en una sentencia switch. do Inicia un bucle del tipo do-while. double Tipo de dato que soporta números en coma flotante, 64 bits. else Indica la opción alternativa en una sentencia if. extends Indica que una clase es derivada de otra o de una intefaz. final Indica que una variable soporta un valor constante o que un método no se sobrescribirá.

Palabras reservadas (II) finally Indica un bloque de código en una estructura try-catch que siempre se ejecutará. float Tipo de dato que soporta un número en coma flotante de 32 bits. for Utilizado para iniciar un bucle for. future Reservada para uso futuro. generic Reservada para uso futuro. goto Reservada para uso futuro. if Evalúa si una expresión es verdadera o falsa y la dirige adecuadamente. implements Especifica que una clase implementa una interfaz. import Referencia a otras clases. inner Reservada para uso futuro. instanceof Indica si un objeto es una instancia de una clase específica o implementa una interfaz específica. int Tipo de dato que puede soportar un entero con signo de 32 bits. interface Declara una interfaz. long Tipo de dato que soporta un entero de 64 bits. native Especifica que un método está implementado con código nativo (específico de la plataforma). new Crea objetos nuevos. null Indica que una referencia no se refiere a nada. operator Reservada para uso futuro. outer Reservada para uso futuro.

Palabras reservadas (y III) package Declara un paquete Java. private Especificador de acceso que indica que un método o variable sólo puede ser accesible desde la clase en la que se está declarando. protected Especificador de acceso que indica que un método o variable solo puede ser accesible desde la clase en la que está declarado ( o una subclase de la clase en la que está declarada u otras clases del mismo paquete). public Especificador de acceso utilizado para clases, interfaces, métodos y variables que indican que un tema es accesible desde la aplicación (o desde donde la clase defina que es accesible). rest Reservada para uso futuro. return Envía control y posiblemente devuelve un valor desde el método que fue invocado. short Tipo de dato que puede soportar un entero de 16 bits. static Indica que una variable o método es un método de una clase (más que estar limitado a un objeto particular). super Se refiere a una clase base de la clase utilizada en un método o constructor de clase. switch Sentencia que ejecuta código basándose en un valor. synchronized Especifica secciones o métodos críticos de código multihilo. this Se refiere al objeto actual en un método o constructor. throw Crea una excepción. throws Indica qué excepciones puede proporcionar un método. transiente Especifica que una variable no es parte del estado persistente de un objeto. try Indica un bloque de código que es comprobado para las excepciones. var Reservado para uso futuro. void Especifica que un método no devuelve ningún valor. volatile Indica que una variable puede cambiar de forma asíncrona. while Inicia un bucle while.

Diferencias entre C/C++ y Java (I) Java no tiene punteros Java no incluye estructuras ni uniones No permite la sobrecarga de operadores No tiene directiva de preprocesado Java no realiza ninguna conversión de tipos automática que signifique una pérdida de precisión Todo código está encapsulado en una clase No se permiten argumentos por defecto No permite la herencia múltiple

Diferencias entre C/C++ y Java (y II) Java no tiene destructores (incorpora el método finalize() ). Java no tiene el operador delete. (incorpora new como C++, pero no delete) Java no utiliza typedef  En Java no es posible declarar enteros sin signo.  Java no incluye la sentencia goto  Los operadores > no están sobrecargados en operaciones de E/S  Los objetos sólo se pasan por referencia. (C++, los objetos se pueden pasar por valor o por referencia)

// HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); }

Applet // Hello.java import java.applet.Applet; import java.awt.Graphics; public class Hello extends Applet { public void paint(Graphics gc) { gc.drawString("Hello, world!", 65, 95); }

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN“ " Hello World Applet