La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Estructura de Datos En C++

Presentaciones similares


Presentación del tema: "Estructura de Datos En C++"— Transcripción de la presentación:

1 Estructura de Datos En C++
Dr. Romeo Sánchez Nigenda. 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: Sesiones: 48

2 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

3 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

4 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> };

5 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

6 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

7 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);

8 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…

9 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);

10 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

11 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(); … }

12 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

13 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


Descargar ppt "Estructura de Datos En C++"

Presentaciones similares


Anuncios Google