PROGRAMACIÓN ORIENTADA A OBJETOS

Documentos relacionados
Introducción a la Orientación a Objetos

Guía práctica de estudio 04: Clases y objetos

Derechos de Acceso: COMPOSICION

Curso de Java POO: Programación orientada a objetos

PROGRAMACION ORIENTADA A OBJETOS EN C++

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Java Avanzado Facultad de Ingeniería. Escuela de computación.

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Diseño Basado en Componentes. Curso 2008 / 09

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Programación Orientada a Objetos (POO)

Aplicaciones de Escritorio

Modulo 11. Clases y Objetos en Java

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Capítulo 16. Diagrama de Clases UML

Java Inicial (20 horas)

Tema: Clases y Objetos en C#. Parte II.

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Tema 3. Programación orientada a objetos en Java (Parte 1)

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Universidad Salesiana de Bolivia

Conceptos de Programación Orientada a Objetos

Curso de Java POO: Programación orientada a objetos

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Principios de Computadoras II

Tema 2. El lenguaje JAVA

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Lenguaje de programación con JAVA

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

5. Sentencias selectivas o condicionales

GUÍA DE ESTILO EN JAVA

Fundamentos Programación Orientada a Objetos ( POO ) - Parte I Desarrollo de Software

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

El patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo.

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

Programación con Visual C#

2.2 Nombres, Ligado y Ámbito

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

FUNDAMENTOS DE INFORMÁTICA

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

Forma Básica Clase Java

La clase Integer y sus métodos. Los Operadores (concepto). Operadores Lógicos y a nivel de Bits. Operadores de desplazamiento. Concatenaciones. La Con

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Tema 7. El sistema de clases

La Herencia: Teoría (1)

Repaso de las características más importantes de la programación Java y su adaptación a Android

Tema 3: Programación orientada a objetos (I)

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

Curso Introducción JAVA Pág.: 1

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

Desarrollador de Aplicaciones Web con Java

Manual de turbo pascal

Conversión entre Tipos

Programación estructurada (Introducción a lenguaje C)

Programación Orientada a Objetos

Elementos de un programa en C

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Conceptos más avanzados de Programación Orientada a Objetos

Resultado de Aprendizaje:

Ficha de Aprendizaje N 13

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

Elementos Diagramas de Clases Clase:

Java en 2 horas. Rodrigo Santamaría

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Las clases como tipos de datos definidos por el usuario

Diagramas de secuencia

UML Unifield Modeling Languaje

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

2.2.- Paradigmas de la POO

PROGRAMACIÓN DE COMPUTADORES II SEMANA 2 ESTE DOCUMENTO CONTIENE LA SEMANA 2

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Clases en C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Algoritmos y Programación II. Enero de 2005

Transcripción:

CONCEPTOS GENERALES PROGRAMACIÓN ORIENTADA A OBJETOS XAVIER CALDERÓN H.

CONCEPTOS Paradigma: Palabra de origen griego que significa modelo o patrón. Paradigma de Programación: Propuesta de una comunidad de programadores para solucionar los problemas. Da una visión o metodología que aplicarán los programadores para resolver diferentes problemas.

CONCEPTOS Los lenguajes de programación se basan en estos paradigmas. Tipos de paradigmas: Paradigma declarativo. Paradigma estructurado. Paradigma funcional. Paradigma orientado objetos. Paradigma lógico.

PARADIGMA ORIENTADO A OBJETOS Los datos son la parte esencial de un programa. Los datos se los agrupa en objetos. Los objetos pueden modelar cualquier elemento del mundo real. A través de este modelamiento se pueden plantear soluciones a los problemas. La interacción de estos diferentes elementos del mundo real se los puede representar con sus comportamientos.

PARADIGMA ORIENTADO A OBJETOS Los comportamientos también se los agrupa en los objetos. Lenguajes basados en este paradigma: Java. SmallTalk. C#. Simula. Ver: http://www.tiobe.com

FUNDAMENTOS TEÓRICOS Algunos de los conceptos fundamentales de los lenguajes orientados a objetos son: Clase. Objeto. Método. Atributos. Constructores. Sobrecarga.

FUNDAMENTOS TEÓRICOS Encapsulación. Herencia. Sobreescritura. Polimorfismo. Clases Abstractas. Interfaces.

CLASE Son patrones que representan grupos de objetos. Describen un conjunto de objetos que tienen similares características. Características como: atributos, métodos y mensajes. Una clase es un conjunto de objetos que comparte una estructura y comportamientos comunes Booch G.,1994.

CLASE La figura que se usa para representar una clase es un rectángulo con 3 secciones. Las secciones son: Nombre de la clase. Miembros de la clase. (con sus Atributos y Métodos) Nombre Clase Atributos Métodos

OBJETO Instancia de una clase. Representa una entidad del mundo real. Una entidad delimitada precisamente y con identidad, que encapsula estado y comportamiento. El estado se representa mediante sus operaciones, métodos y máquinas de estado. Un objeto es una instancia de una clase OMG, 2001. Ver: http://www.omg.org

OBJETO Relación entre clase y objeto.

CONCEPTOS Estado: representa la definición de atributos internos del objeto, sus características. Por ejemplo, un PC tiene un cierto número de puertos, un cierto número de procesadores, un monitor, un disco duro, etc. Comportamiento: representa la definición del comportamiento del objeto, las acciones que éste puede realizar. Por ejemplo, un router puede encender, reiniciar, enrutar, etc. Identidad: Cada objeto tiene una identidad única.

ATRIBUTO-MÉTODO Los miembros de un objeto son: atributos y métodos. Atributos: conjunto de características o propiedades de los objetos. Pueden ser variables numéricas, booleanas o referencias a otros objetos. Métodos: Representan el comportamiento de los objetos. Son funciones que operan sobre los atributos de los objetos. POR: XAVIER CALDERÓN H.

EJEMPLO Estructura para el código de una clase. Con Java por ejemplo: public class <NombreClase> { // Declaración de atributos <tipo> <variable> ; // Declaración de métodos <tipo> <nombremétodo> ( <argumentos de entrada> ) {... } }

EJEMPLO Definición Atributo. <tipo_dato> <nombre_atributo> ; Donde: <tipo_dato>: tipo de dato del atributo. (numéricos, booleanos o referencia) <nombre_atributo>: identificador del atributo

EJEMPLO Definición Método. <tiporetorno> <nombremétodo> ( <listaargumentos> ) { <bloquecódigo> } <tiporetorno>: tipo de dato que retorna el método (numéricos, booleanos o referencia) Si no devuelve ningún valor, debe ser void <nombremétodo>: identificador del método <listaargumentos>: el método admite que le pasen argumentos separados por comas con el formato: [<tipo> <argumento> [, <tipo> <argumento>...]]

CREACIÓN OBJETO Se utiliza la palabra reservada new. Por ejemplo: 1. <NombreClase> <refobjeto>; 2. <refobjeto> = new <NombreClase>() ; O también: 1. <NombreClase> <refobjeto>=new <NombreClase>() ; Nota: Recordar que la sintaxis y semántica depende de cada lenguaje.

ACCESO A LOS MIEMBROS Se usa el operador punto (.) para acceder a los atributos y a los métodos. Por ejemplo:

NOMENCLATURA Se recomienda usar una nomenclatura para los identificadores de clases, atributos y métodos. Por ejemplo en JAVA; se usa: Clases: primera letra en mayúscula de cada palabra. Ejemplo: Redes, AnchoDeBanda, String, etc. Variables: primera letra en minúscula y la primera letra de cada palabra en mayúscula. Ejemplo: trafico, redeslan, interfazentrada; etc.

NOMENCLATURA Constantes: todo en mayúsculas, separando cada palabra por el carácter _ Ejemplo: PI, ANCHO_BANDA, etc. Métodos: siguen el mismo formato que las variables seguidas de paréntesis ( ) Ejemplo: modulacion(), calculotrafico() Estructuras de control: utilizar llaves englobando a todas las sentencias de una estructura de control, aunque sólo haya una sentencia.

INTERCAMBIO DE MENSAJES Permiten la comunicación entre los objetos. Mensaje: una llamada a una operación o a un objeto, en el cual se incluye el nombre de la operación y una lista de valores de argumentos Rumbaugh, J., 1999. Dependiendo del autor se pueden clasificar a los mensajes de varias formas. Tipos de mensajes:

INTERCAMBIO DE MENSAJES Modificador Constructor. Destructor. Selector. Iterator.

CONSTRUCTOR Construyen objetos a partir de una clase. Métodos que tienen el mismo nombre de la clase. Inicializa el estado de un objeto. El constructor inicializa las variables. Por ejemplo: Socket obj; obj=new Socket(); obj=new Socket(8080, 192.168.1.1 );

CONSTRUCTOR Si no se ha definido un constructor; los lenguajes de programación en general definen uno por defecto.

CONSTRUCTOR Los constructores asignan la referencia del espacio de memoria en el que se carga el objeto.

DESTRUCTOR Operación que destruye el objeto. En algunos lenguajes no se definen los destructores (JAVA). En Java el Garbage Collector libera la memoria. En C++ los destructores son esenciales para liberar la memoria ocupada por el objeto. Ejemplo C++: Coche::~Coche() { cout << "Coche destruido." << endl; }

SOBRECARGA Se usa cuando se requieren métodos que realicen la misma tarea pero con diferentes argumentos de entrada. Los métodos sobrecargados tienen el mismo nombre de identificador para todos los métodos. Por ejemplo en Java:

SOBRECARGA Permite tener varios métodos con el mismo nombre pero se los diferencia por sus argumentos de entrada. Un método se identifica por su nombre, el tipo de retorno, el número de argumentos que tiene y el tipo de cada uno de los argumentos. En C++ se pueden sobrecargar los operadores. Los constructores se pueden sobrecargar.

EJEMPLO JAVA

ENCAPSULACIÓN Se refiere al ocultamiento de la información. Característica de encapsular a los datos y métodos. Capacidad de expresar la unidad de los atributos y las operaciones. Nota: En este texto vamos a usar los términos métodos y operaciones; como similares.

ENCAPSULACIÓN La encapsulación consiste en el agrupamiento de datos y su tratamiento en una misma estructura. Permite la protección de la manipulación externa de algunas partes de los objetos. La encapsulación se la implementa con ciertas particularidades dependiendo del lenguaje.

ENCAPSULACIÓN Un objeto suele tener datos y código privados de acceso restringido. Fuerza al usuario a utilizar una interfaz para acceder a los datos. Hace que el código sea más fácil de mantener.

ENCAPSULACIÓN Ejemplo en C++: class Coche { public: Coche(); Coche(char *m,int cil,int cab); ~Coche(); void arranca(); void detiene(); void acelera(); private: char *marca; int cilindrada; int caballos; };

ENCAPSULACIÓN Los modificadores permiten acceder a los datos o al código de manera restringida:

ENCAPSULACIÓN

HERENCIA Jerarquía de clases basada en agrupar atributos y/o métodos comunes. No todos los lenguajes orientados a objetos definen clases. En términos de objetos la herencia permite que una objetos se puedan basar en otros ya existentes.

HERENCIA Se definen las clases padres también llamadas superclases y las clases hijas también denominadas subclases.

HERENCIA La idea es la de partir de las situaciones más generales e ir derivando hacia las más particulares.

HERENCIA Si una clase hereda de una única clase se considera herencia simple. Si una clase hereda de varias clases se considera herencia múltiple. Dependiendo del lenguaje se puede aplicar la herencia simple y/o múltiple.

HERENCIA Herencia simple. Herencia múltiple.

HERENCIA Por ejemplo Java solo soporta herencia simple en cambio C++ herencia múltiple. POR: XAVIER CALDERÓN H.

HERENCIA Supongamos, por ejemplo (usando Java), que tenemos la clase Aula y la clase Laboratorio definidas como sigue:

HERENCIA Entonces se podría reestructurar las clases anteriores aplicando herencia de la siguiente forma:

HERENCIA Las partes comunes se pueden agrupar en una misma clase, manteniendo las otras dos clases con las partes no comunes y heredando de esta nueva clase con la palabra reservada extends (con Java). POR: XAVIER CALDERÓN H.

SOBREESCRITURA También llamados métodos virtuales. Una subclase puede modificar los métodos que ha heredado de la superclase, manteniendo los mismos nombres, tipo de retorno y lista de argumentos. El objetivo del método sobreescrito en la subclase es modificar la funcionalidad del método definido en la superclase.

SOBREESCRITURA Ejemplo en Java: class Router {... double calcularcosto() {...} } class RouterCisco extends Router { int numinterfaces; double calcularcosto() {...} }

POLIMORFISMO Polimorfismo indica muchas formas. Según Rumbaugh J., 1991; Toma de varias formas; propiedad que permite a una operación tener distintos comportamientos en distintas clases El polimorfismo es un concepto fundamental del paradigma orientado a objetos.

POLIMORFISMO Una clase sólo tiene una forma. La variable que hace referencia a la superclase de una jerarquía puede tener muchas formas (una por cada subclase). En forma general polimorfismo se puede implementar mediante: Polimorfismo universal. Polimorfismo ad hoc.

POLIMORFISMO Dentro del polimorfismo universal tenemos: Polimorfismo paramétrico. Polimorfismo de inclusión. Dentro del polimorfismo ad hoc tenemos: Polimorfismo por sobrecarga de métodos. Polimorfismo de operadores. Dependiendo del lenguaje de programación se implementará un tipo de polimorfismo.

POLIMORFISMO Por ejemplo en Java se usa el polimorfismo con: Parámetros polimórficos: se refiere a los argumentos de entrada de los métodos; a los que se les pasa el parámetro polimórfico. Colecciones heterogéneas: se basa en el uso de la sobreescritura de métodos. Para implementar este tipo de polimorfismo es esencial tener una jerarquía de clases.

POLIMORFISMO Ejemplo de parámetros polimórficos (Java). class Redes {...} class Lan extends Redes {...} class Wan extends Redes {...} class Gestion { void calculartrafico ( Redes m ) {...}}.... Gestion administrar = new Gestion(); Lan obj1 = new Lan(); Wan obj2 = new Wan(); administrar.calculartrafico(obj1); administrar.calculartrafico(obj2);...

POLIMORFISMO Ejemplo de colecciones heterogéneas(java): class Redes {...} class Lan extends Redes {...} class Wan extends Redes {...} Redes[] listaredes = new Redes[5]; listaredes[0] = new Redes(); listaredes[1] = new Lan(); listaredes[2] = new Wan(); listaredes[3] = new Wan(); listaredes[4] = new Lan();

CLASES ABSTRACTAS Clase que no se puede instanciar. Clase de la que no se pueden crear objetos. El objetivo es que las subclases de las clases abstractas (superclase) definan o completen las especificaciones de las mismas; implementando los elementos abstractos de estas superclases.

CLASES ABSTRACTAS Ejemplo en Java: abstract class Computador {...} class Servidor extends Computador {...} class Router extends Computador {...} class Switch extends Computador {...}... Computador m = new Computador (); ERROR Router m = new Router (); CORRECTO

CLASES ABSTRACTAS Métodos abstractos: Un método es abstracto si se declara (dentro de una clase abstracta), pero no se lo implementa. Ejemplo con Java. abstract class Servidor {... public abstract void servicio(); } Cada lenguaje OO tiene distintas abstracciones como: clases, métodos y variables virtuales.

CLASES ABSTRACTAS Las subclases de una clase abstracta deben implementar los métodos abstractos que tengan declarados. Ejemplo con Java: class ServicioWeb extends Servidor {... public void servicio() {...} } class ServicioFtp extends Servidor {... public void servicio() {...} }

CLASES ABSTRACTAS Según Martin R., 1994; existe una categoría de clases que se considera más estable; si este grupo de clases se basa en clases abstractas. Una categoría completamente estable debería consistir solo en clases abstractas. Una medida del grado de abstracción es: Grado = A = Nº de clases abstractas / Nº total de clases Rango de A entre 0 a 1.

INTERFACES Una interface es un conjunto de declaraciones de métodos. En una interfaz no se implementan los métodos. Ejemplo con Java: public interface <NombreInterfaz> { <tipo> <nombremétodo1> ( <args> ); <tipo> <nombremétodo2> ( <args> ); //No existe implementación de los métodos }

INTERFACES Las interfaces se usan para:

INTERFACES Por ejemplo en Java para implementar una interfaz se usa la palabra implements. public class <NombreClase> implements <NombreInterfaz> {... <tipo> <nombremétodo1> ( <args> ) { <código> } <tipo> <nombremétodo2> ( <args> ) { <código> }... }

INTERFACES-CLASES ABSTRACTAS Se puede realizar una equivalencia entre una interfaz y una clase abstracta. interface Interfaz { <tipo> <método1>(); <tipo> <método2>();... <tipo> <métodon>(); } abstract class Interfaz { abstract <tipo> <método1>(); abstract <tipo> <método2>();... abstract <tipo> <métodon>(); }

THREADS Un thread es un flujo de ejecución secuencial dentro de un proceso. Un thread es un hilo de ejecución de un programa. Un thread tiene asociado: tiempo de CPU, memoria para código y memoria para datos. Un thread se puede comunicar, coordinar y sincronizar con otros hilos.

THREADS Un thread de un programa trata de simular a los threads que funcionan en los sistemas operativos. Un thread tiene estados que permiten controlar su ciclo de vida. Los lenguajes de programación tienen métodos para controlar el ciclo de vida de un thread.

THREADS Por ejemplo en Java los estados de un thread son:

THREADS Estados: Nuevo: el thread ha sido creado, pero no inicializado con el método start(). Ejecutable: el thread puede estar ejecutándose o preparado para ejecutarse. Se inicia con start() Bloqueado: el thread podría estar ejecutándose, pero está esperando que termine alguna otra tarea, p.e., E/S de disco Muerto: terminación del thread al finalizar el método run().

THREADS Ciclo de vida de un thread en Java:

THREADS Los threads se pueden sincronizar. Se sincronizan los threads para evitar que se haga más de un acceso simultáneo a una región crítica. Los threads se implementan según cada lenguaje de programación.

THREADS En Java se pueden implementar los threads de dos formas: Declarar una clase que implemente la interfaz Runnable. Crear un objeto de tipo Thread a partir de ella.

BIBLIOGRAFÍA-FUENTES: Savitch, Walter, "Absolute JAVA", 2nd ed., Pearson, EEUU, 2008. K. Barclay,J. Savage, "Object-Oriented Design with UML and Java",1st ed. Elsevier, Gran Bretaña, 2004. Fco. Javier Alcalá Casado, Programación en Java. Peter Class; Pello Xabier Altadill Izura; Manual C++. Miguel Ángel Abián, Orientación a Objetos: Conceptos y terminología. http://www.javahispano.org/documentacion/ http://www.omg.org