Estructura de Datos En C++

Slides:



Advertisements
Presentaciones similares
Unidad 3 Lenguajes .Net y POO
Advertisements

Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
POLIMORFISMO "una interfaz, múltiples métodos".
Lenguaje de programación Java
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.
Estructura de Datos En C++
Programación Científica
Arquitectura CLARO-TECNOTREE
La Programación Orientado a Objetos
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Programación Orientada a Objetos Encapsulamiento.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Herencia y Polimorfismo
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
Diseño y programación de
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Algoritmos y Estructuras de Datos
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
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.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Modificadores.
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
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.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
Técnicas avanzadas de programación Interfaces
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.
Estructura de Datos En C++
Programación Científica
Estructura de Datos En C++
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Estructura de Datos En C++
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Herramientas de polimorfismo y herencia en C++
1 Introducción a Clases Agustín J. González Versión original de Kip Irvine ELO329.
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.
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Programación orientada a objetos
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
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.
Programación orientada a objetos Capítulo 9 Algo mas sobre herencias.
UNIVERSIDAD TECNOLÓGICA DE IZÚCAR DE MATAMOROS TECNOLOGÍAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO. GONZALO ROSAS CABRERA.
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
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.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

Estructura de Datos En C++ Dr. Romeo Sánchez Nigenda. E-mail: romeo.sanchez@gmail.com http://yalma.fime.uanl.mx/~romeo/ Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón Horas de Tutoría: 10am-11am Martes y Jueves, 3:30pm-4:30pm Miércoles, 2:00pm-4:00pm Viernes. Website: http://yalma.fime.uanl.mx/~romeo/ED/2011/ Sesiones: 48

Tipo de datos abstracto Clases (C++) Una clase es un concepto de un tipo de datos abstracto (ADTs), definiendo tanto el conjunto de valores de un cierto tipo (datos), como el conjunto de operaciones que se ejecutan sobre tales valores. A la instanciación de la clase se le conoce como un objeto, define un estado que es representado por los valores de sus atributos A las operaciones como métodos definen el comportamiento del objeto Tipo de datos abstracto Interface Pública Datos abstractos Elementos Privados Operaciones

Clases (C++) Para proveer un buen mecanismo de soporte de definición y uso de tipos, Clases deben: Soportar definiciones de tipo con: Estado de un programa (datos miembros de la clase) Definición de semántica (funciones de la clase) Inicialización (constructores de la clase) Terminación (destructores de la clase) Soportar el uso de tipos: Globales, locales o vía New En argumentos a funciones Retornos de funciones Comportamiento Capacidad de soportar operaciones definidas por el usuario Capacidad de soportar conversiones definidas por el usuario Capacidad de soportar asignación y copia de tipos

Clases: Principios básicos de POO Encapsulación: Principio de esconder las estructuras de datos usadas, y solo proveer una interface pública para operar sobre dichos datos. La separación de estructuras de datos y operaciones, y la restricción de solamente acceder a la estructura de datos vía una interface bien definida, permite escoger independientemente las estructuras de datos apropiadas al tipo de la aplicación class <classname> { public: <constructor> <destructor> <public data members> <public member functions (methods)> private: <private data members> <private member functions> };

Clases: Relaciones Un-tipo-de: (A-kind-of) Es-un: (is-a) class Circle { int x, y, radius; public: void setX(int); int getX(); void setY(int); int getY() ; void setRadius(int); int getRadius(); } class Point { int x, y; public: void setX(int); int getX(); void setY(int); int getY() } Es un tipo de Es-un: (is-a) Es un

Clases: Relaciones Es-parte-de (is-part-of): Tiene-un (has-a): class Logo { Circle circle; Triangle triangle; public: void set(Circle) ; } Es parte de Es parte de Tiene-un (has-a): Es parte de Es parte de Tiene un Tiene un

Herencia (inheritance) Relaciona objetos usando relaciones un-tipo-de y es-un. Es el mecanismo que permite que una clase A herede propiedades de una clase B. Ejemplo: Un Círculo hereda de un Punto: Superclase class Circle : public Point { int radius; public: void setRadius(); int getRadius(); } Circle acircle; acircle.setX(1); acircle.setY(2); acircle.setRadius(); Subclase La relación es-un implica que se puede utilizar un círculo en cualquier lugar donde se espera un punto Move(Point apoint, int deltax){ apoint.setX(apoint.getX()+deltax); } Circle circle; Move(circle,10);

Clases abstractas Describe únicamente las propiedades de un conjunto de objetos sin especificar su comportamiento Cada subclase deberá entonces proveer métodos que implementen los de la clase abstracta abstract class Figura { public: print(); } class Point : public Figura(){ print(){ …;} No es necesaria la implementación, dependerá de las subclases…

Tipos genéricos Cuando definimos una clase, en realidad definimos un tipo, podría haber una lista de carros, frutas, números, etc. Usamos tipos genéricos para definir la clase Ya que no sabemos con que tipos la clase será usada, debemos usar placeholders y referir a ellos como el tipo que opera la clase Por la tanto la definición de clase actuará como un template, la clase actual se definirá cuando creemos un objeto. template class List T{ public: append(T element); T getFirst(); T getNext(); } Clase Template: Clase A parametrizada con un tipo de datos B. Una vez que un objeto de A es creado, B es reemplazado un el tipo actual de datos. List Point pointList; Point apoint; pointList.append(apoint);

Polimorfismo Permite que una entidad (variable, función, objeto) tome una variedad de representaciones. Concepto de linkeo dinámico, dependiendo de el contenido en un determinado tiempo. Nos permite utilizar el mismo nombre para funciones, mientras su lista de parámetros sea diferente (overloading) Boolean isNull(int i); Boolean isNull(float r); Objetos de una superclase pueden reemplazarse con objetos de sus subclases. void display (Figura o){ o.print } Circle c; Point p; //Asuma que todas estas subclases extienden Figura Square s; display(c); //Utiliza la implementación de Circle.print display(p); //Utiliza Point.print

Clases (C++): Ejemplo Clase Fraction almacena números fraccionales: 4/5, 1/3, Simplifica radios: 3/3 = 1/1, 3/6= 1/2, 6/2=3/1, -1/-1=1/1 Soporta operadores: +, *, / Área privada class Fraction{ long numerador; long denominador; void normalize(void); long gcf(long, long); //Greatest common factor long lcm(long,long); //Lowest common denominator public: Fraction(void); Fraction (long); Fraction (long,long); long get_numerator(); long get_denominator(); … }

Clases (C++) Constructores y homogeneidad: Fraction::Fraction(void){ //Supone que un número racional es 0 numerador = 0; denominador = 1; } Fraction::Fraction(long i){ numerador = i; Fraction::Fraction(long i, long j){ denominador = j; normalize(); void main(){ Fraction r; //0/1 Fraction r(3); // 3/1 Fraction r(2,5); // 2/5

Clases (C++) Implementación de métodos long Fraction::get_numerator(){ return numerator; } long Fraction::get_denominator(){ return denominator; Inline functions: public: long get_numerator(){return numerator;} long get_denominator(){return denominator;} Returna datos privados