1 / 25

Chapter 11 Structured Types, Data Abstraction and Classes

Chapter 11 Structured Types, Data Abstraction and Classes. Dale/Weems/Headington. Chapter 11 Topics. Meaning of a Structured Data Type Declaring and Using a struct Data Type C++ union Data Type. floating. address. float double long double. pointer reference. C++ Data Types.

bridie
Download Presentation

Chapter 11 Structured Types, Data Abstraction and Classes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 11Structured Types,Data Abstraction and Classes Dale/Weems/Headington

  2. Chapter 11 Topics • Meaning of a Structured Data Type • Declaring and Using a struct Data Type • C++ union Data Type

  3. floating address float double long double pointer reference C++ Data Types simple structured integral enum array struct union class char short int long bool

  4. Tipo de dato Structured El tipo de dato “structured” tiene la particularidad de que cada valor es una colección de items. • Toda la colección tiene un solo nombre • Cada componente (item) puede ser acedido individualmente

  5. Structured Type (Cont.) A menudo en los programas tenemos información relacionada de varios tipos de datos que queremos almacenar juntos para un acesso más conveniente debajo del mismo “identifier”, por ejemplo. . .

  6. thisAnimal 5000 .id 2037581 .name “giant panda” .genus “Ailuropoda” .species “melanoluka” .country “China” .age 18 .weight 234.6 .health Good

  7. anotherAnimal 6000 .id 5281003 .name “llama” .genus “Lama” .species “peruana” .country “Peru” .age 7 .weight 278.5 .health Excellent

  8. struct AnimalType enum HealthType { Poor, Fair, Good, Excellent } ; struct AnimalType// declares a struct data type {// does not allocate memory long id ; string name ; string genus ; string species ; struct members string country ; int age ; float weight ; HealthType health ; } ; AnimalType thisAnimal ; // declare variables of AnimalType AnimalType anotherAnimal ; 8

  9. Declaración del tipo struct SYNTAXIS struct TypeName // does not allocate memory { MemberList } ; MemberList SYNTAXIS DataType MemberName ; DataType MemberName ; . . .

  10. Declaración (continuación) La declaración de struct nombra los tipos y nombres de los miembros de la estructura. Esta declaración no separa espacio en memoria para ninguna de las variables mencionadas. Para eso, se necesita declarar las variables.

  11. Más sobre las declaraciones tipo struct Si la declaración precede a todas las funciones, entonces todas esas funciones la pueden reconocer. Si se pone dentro de una función, solo la puede utilizar esa función. Es común definir estas estructuras en archivos tipo “header” (.h) los cuales son invocados con la directiva #include. Es posible que miembros de otras estructuras tengan los mismos “identifiers”(nombres de variables). También es posible usar los mismos “dentifiers” en variables que no esten dentro de una estructura como tal.

  12. Accedermiembros de unstruct Dot ( punto ) es el “member selection operator”. Despues de ser declarados, los miembros puedes ser usados precedidos del nombre de la estructura, el punto y el nombre de la variable al final. EJEMPLOS thisAnimal.weight anotherAnimal.country

  13. Operaciones Válidas en los miembros de una estructura de acuerdo a su tipo de dato thisAnimal.age = 18; thisAnimal.id = 2037581; cin >> thisAnimal.weight; getline ( cin, thisAnimal.species ); thisAnimal.name = “giant panda”; thisAnimal.genus[ 0 ] = toupper (thisAnimal.genus[ 0 ] ) ; thisAnimal.age++;

  14. Operación “Aggregate” Es una operación en una estructura de datos como un todo, al contrario de las otras operaciones en que se trabajan los datos individualmente

  15. Operaciones de una estructura Aggregate • I/O, aritmética, y comparaciones de la estructura completa no es permitido. • operaciones válidas que incluyan una estructura completa son: • asignaciones de una estructura a otra del mismo tipo, • pasar a una función como argumento (por valor o por referencia), • devolver (return) como un valor de una función

  16. Ejemplos de operaciones válidas del aggregate struct anotherAnimal = thisAnimal ; // assignment WriteOut(thisAnimal); // value parameter ChangeWeightAndAge(thisAnimal); // reference parameter thisAnimal = GetAnimalData( ); // return value of function Ahora vienen 3 funciones que nos muestra el uso de esta estructura. . .

  17. void WriteOut( /* in */ AnimalType thisAnimal) // Prints out values of all members of thisAnimal // Precondition: all members of thisAnimal are assigned // Postcondition: all members have been written out { cout << “ID # “ << thisAnimal.id << thisAnimal.name << endl ; cout << thisAnimal.genus << thisAnimal.species << endl ; cout << thisAnimal.country << endl ; cout << thisAnimal.age << “ years “ << endl ; cout << thisAnimal.weight << “ lbs. “ << endl ; cout << “General health : “ ; WriteWord ( thisAnimal.health ) ; } 17

  18. Pasando un tipo struct por Referencia void ChangeAge ( /* inout */ AnimalType& thisAnimal ) // Adds 1 to age // Precondition: thisAnimal.age is assigned // Postcondition: thisAnimal.age == thisAnimal.age@entry + 1 { thisAnimal.age++ ; }

  19. AnimalType GetAnimalData ( void ) // Obtains all information about an animal from keyboard // Postcondition: // Function value == AnimalType members entered at kbd { AnimalType thisAnimal ; char response ; do { // have user enter all members until they are correct . . . } while (response != ‘Y’ ) ; return thisAnimal ; } 19

  20. Estructuras Jerárquicas El miembro de una estructura, puede ser otra estructura como tal. Esto se conoce como “nested or hierarchical structures”. Las estructuras Jerárquicas son útiles cuando existe mucha información detallada en un record. POR EJEMPLO . . .

  21. struct MachineRec La información de cada máquina contiene: un idNumber, una descripción escrita, la fecha de compra (“purchase date”), el costo, y un historial (incluye “failure rate”, “number of days down”, y fecha del último servicio).

  22. struct DateType { int month ; // Assume 1 . . 12 int day ;// Assume 1 . . 31 int year ; // Assume 1900 . . 2050 }; struct StatisticsType { float failRate ; DateType lastServiced ; // DateType is a struct type int downDays ; } ; struct MachineRec { int idNumber ; string description ; StatisticsType history ; // StatisticsType is a struct type DateType purchaseDate ; float cost ; } ; MachineRec machine ; 22

  23. struct type variable machine 7000 5719 “DRILLING…” 3 21 1995 8000.0 .02 1 25 1999 4 .month .day .year .month .day .year .failrate .lastServiced .downdays .idNumber .description . history .purchaseDate .cost machine.history.lastServiced.year has value 1999

  24. Uniones en C++ DEFINICIÓN Una unión es una estructura que maneja sólo uno de sus miembros a la vez durante la ejecución del programa. EJEMPLO union WeightType { long wtInOunces ; int wtInPounds; only one at a time float wtInTons; } ;

  25. Utilizando “Unions” union WeightType // declares a union type { long wtInOunces ; int wtInPounds; float wtInTons; } ; WeightType weight; // declares a union variable weight.wtInTons = 4.83 ; // Weight in tons is no longer needed. Reuse the memory space. weight.wtInPounds = 35; 25

More Related