Title: Captulo 2
1CapÃtulo 2
- Data Design and Implementation
2Data
- Los objetos que son manipulados
- la información que es manipulada por la
computadora
3Data abstraction
- A nosotros los humanos nos gusta representar la
data de una forma , sin embargo sabenos que
internamente en la máquina la data se representa
de otra forma. - Collection of bits that can be turned on or off.
4Data abstraction
- Separation of a datas logical properties from
its implementation - El concepto mental que nos creamos
- el modelo que utilizamos para pensar sobre un
concepto. - distance rate time
5Data Encapsulation
- Es la separación de la representación de la data
de la aplicación que usa la data al nivel lógico.
6Encapsulated C Data Type int
TYPE int
Representation of int as 16 bits twos
complement Implementation of
Operations
Value range INT_MIN . . INT_MAX
Operations prefix - prefix
infix - infix infix / infix
infix Relational Operators infix
(inside)
7Abstract Data Type (ADT)
- Un tipo de data cuyas propiedades( dominio y
operaciones ) son especificadas
independientemente de cualquier tipo de
implementación.
8Composite Data Type
- Un tipo de data compuesto es un tipo
quealmacena una colección de componentes de
data individuales bajo el nombre de una sola
variable.Y permite que los componentes
individuales sean accesados.
9Two Forms of Composite Data Types
STRUCTURED
UNSTRUCTURED
The organization determines method used to
access individual data components.
Components are not organized with respect to
one another.
EXAMPLES EXAMPLES arrays classes and structs
9
10C Built-In Data Types
Simple
Composite
Integral
Floating
array struct union class
char short int long enum
float double long double
11Two-Dimensional Array at the Logical Level
- A two-dimensional array is a structured composite
data type made up of a finite, fixed size
collection of homogeneous elements having
relative positions and to which there is direct
access. - Array operations (creation, storing a value,
retrieving a value) are performed using a
declaration and a pair of indexes (called row and
column) representing the components position in
each dimension. -
12(No Transcript)
13EXAMPLE -- To keep monthly high temperatures for
50 states in a two-dimensional array.
const int NUM_STATES 50 const int
NUM_MONTHS 12 int stateHighs NUM_STATES
NUM_MONTHS 0
1 2
. . stateHighs 2 7
. 48
49
0 1 2 3 4 5 6 7 8 9
10 11
66 64 72 78 85 90 99 115 98 90 88 80
row 2, col 7 might be Arizonas high for August
14Finding the average high temperature for Arizona
int total 0 int month int average
for ( month 0 month lt NUM_MONTHS month
) total total stateHighs 2
month average
int ( total / 12.0 0.5 )
15const int NUM_STATES 50 const int
NUM_MONTHS 12 int stateHighs NUM_STATES
NUM_MONTHS
STORAGE
rows columns
- In memory, C stores arrays in row order. The
first row is followed by the second row, etc.
Base Address
8000
8024
8048
. . .
12 highs for state 0 12 highs for state 1
etc. Alabama
Alaska first row
second row
16Implementation Level View
stateHighs 0 0 stateHighs 0 1
stateHighs 0 2 stateHighs 0 3
stateHighs 0 4 stateHighs 0 5
stateHighs 0 6 stateHighs 0 7
stateHighs 0 8 stateHighs 0 9
stateHighs 0 10 stateHighs 0 11
stateHighs 1 0 stateHighs 1 1
stateHighs 1 2 stateHighs 1 3
. . .
Base Address 8000
To locate an element such as stateHighs 2
7 the compiler needs to know that there are 12
columns in this two-dimensional array. At what
address will stateHighs 2 7 be
found? Assume 2 bytes for type int.
17NamespacesIntroduction
- En nuestros programas muchas veces necesitamos
usar diferentes librerÃas. - Programas escritos por diferentes personas pueden
generar problemas con nombres repetidos - Esto motivó añadir el mecanismo de namespace.
18Namespaces
- Es un área del programa que puede tener nombre o
no. - Una colección de definiciones de nombres , tal
como definición de clases y declaración de
variables. - Un namespace se parece un poco a una clase en el
sentido que puede ser accesado mediante
cualificación. - Es diferente en el sentido que puede distribuirse
en diferentes archivos. - Si hay un nombre idéntico en otra clase , es
posible, proveer acceso a nombres de otros
namespaeces evitando el conflicto de nombres.
19- Uso de includeltiostream.hgt
- ahora ANSI C includeltiostreamgtusing
namespace std - std contiene las definiciones de las librerÃas
standard de C.
20Multiple Names
- Multiple namespace
- What if name defined in both?
- Error
- Can still use both namespaces
- Must specify which namespace used atwhat time
21 Ejemplo de uso de namespace en un programa
22using Declarations
- Can specify individual names fromnamespace
- ConsiderNamespaces NS1, NS2 existEach have
functions fun1(), fun2() - Declaration syntaxusing Name_SpaceOne_Name
- Specify which name from eachusing
NS1fun1using NS2fun2
23using Definitions and Declarations
- Differences
- using declaration
- Makes ONE name in namespace available
- Introduces names so no other uses of name
areallowed - using directive
- Makes ALL names in namespace available
- Only potentially introduces names
24Qualifying Names
- Can specify where name comes from
- Use qualifier and scope-resolution operator
- Used if only intend one use (or few)
- NS1fun1()
- Specifies that fun() comes from namespaceNS1
- Especially useful for parametersint
getInput(stdistream inputStream) - Parameter found in istreams std namespace
- Eliminates need for using directive or declaration
25Otro ejemplo donde se usan archivos diferentes