2. • El
lenguaje
C
nació
en
los
laboratorios
Bell
de
AT&T
y
ha
sido
estrechamente
asociado
con
el
sistema
operativo
UNIX,
ya
que
su
desarrollo
se
realizó
en
este
sistema
y
debido
a
que
tanto
UNIX
como
el
propio
compilador
C
y
casi
la
totalidad
de
los
programas
y
herramientas
de
UNIX,
fueron
escritos
en
C.
Su
eficiencia
y
claridad
han
hecho
que
el
lenguaje
ensamblador
apenas
haya
sido
utilizado
en
UNIX.
• Este
lenguaje
está
inspirado
en
el
lenguaje
B
escrito
por
Ken
Thompson
en
1970
con
intención
de
re-‐codificar
el
UNIX,
que
en
la
fase
de
arranque
estaba
escrito
en
ensamblador,
en
vistas
a
su
transportabilidad a
otras
máquinas.
B
era
un
lenguaje
evolucionado
e
independiente
de
la
máquina,
inspirado
en
el
lenguaje
BCPL
concebido
por
Martín
Richard
en
1967.
HISTORIA
DEL
LENGUAJE
C++
3. • En 1972, Dennis Ritchie, toma el relevo y modifica el lenguaje B, creando el
lenguaje C y reescribiendo el UNIX en dicho lenguaje. La novedad que
proporcionó el lenguaje C sobre el B fue el diseño de tipos y estructuras de
datos. Una de las peculiaridades de C es su riqueza de operadores. Puede
decirse que prácticamente dispone de un operador para cada una de las
posibles operaciones en código máquina.
• Este lenguaje ha evolucionado paralelamente a UNIX. Así, en 1980 se
añaden al lenguaje C, características como las clases (Tomado de
Simula67), chequeo y conversión de los tipos de argumentos de función,
etc.; el resultado fue el lenguaje denominado "C con clases".
HISTORIA
DEL
LENGUAJE
C++
4. • En
1983/84,
C
con
clases
fue
rediseñado,
extendido
y
nuevamente
implementado.
El
resultado
se
denomino:
Lenguaje
C++.
Después
de
algún
otro
refinamiento
más,
C++
queda
disponible
en
1985.
Este
lenguaje
fue
inventado
por
Bjarne Stroustrup (AT&T
Bell
Laboratories)
y
documentado
por
varios
libros
suyos.
El
nombre
C++
se
debe
a
Rick
Mascitti,
significando
el
carácter
evolutivo
de
las
transformaciones
de
C
('++'
es
el
operador
de
incremento
de
C).
• Son
varios
los
lenguajes
que
han
contribuido
a
la
evolución
de
los
lenguajes
orientados
a
objetos
de
hoy:
LISP
en
la
década
de
los
50,
Simula
en
los
60
y
mas
tarde
Pascal,
C,
Modula
y
Ada.
• Si
bien,
estos
lenguajes
no
incluyen
mecanismos
para
la
programación
orientada
a
objetos,
sus
características
sirvieron
de
base
para
la
construcción
de
estos
mecanismos;
por
ejemplo,
Simula
contribuye
con
el
concepto
de
clase.
HISTORIA
DEL
LENGUAJE
C++
5. • En
la
década
de
los
70,
nace
SmallTalk como
un
lenguaje
orientado
a
objetos
puro
con
lo
que
queda
introducido
definitivamente
este
tipo
de
programación.
• En
los
años
siguientes
los
avances
experimentados
en
la
programación
orientada
a
objetos
fueron
pocos.
• Es
en
la
década
de
los
80
cuando
los
avances
son
mayores,
debido
fundamentalmente
a
la
disponibilidad
de
extensiones
orientadas
a
objetos
en
dos
de
los
lenguajes
mas
populares,
C
y
Pascal.
• Esto
da
lugar
a
la
aparición
de
los
lenguajes
orientados
a
objetos
híbridos,
entre
los
que
se
destacan
C++
y
Pascal
orientado
a
objetos.
• Estos
lenguajes
tienen
una
característica
muy
importante
y
es
que
guardan
la
compatibilidad
con
sus
antecesores.
HISTORIA
DEL
LENGUAJE
C++
6. • Los
objetos
son
entidades
que
tratamos
en
nuestra
vida
diaria
y
el
centro
de
la POO.
• Se
pueden
definir
como
la
representación
de
un
objeto
del
mundo
real
en
un
entorno
de
programación.
• Es
muy
fácil
identificar
en
los
objetos
del
mundo
real
sus
características
principales,
es
decir
las
propiedades
que
los
hacen
diferentes
entre
si,
o
las
acciones
que
puede
realizar.
• Es
precisamente
esta
la
labor
que
se
debe
realizar
en
la
POO,
identificar
las
características
y
acciones
de
los
objetos
que
formaran
la
aplicación.
OBJETOS
7. • Identidad: Algunos objetos en la programación pueden ser una ventana,
un botón, pero aunque dos objetos sean exactamente iguales en sus
atributos, son distintos entre sí.
• Veamos en caso de los animales mamíferos, todos ellos tienen la
característica de pertenecer a este conjunto por poseer glándulas
mamarias, pero al comparar una vaca y una cabra estas son diferentes,
ya sea por el tamaño, el aspecto u otras características obvias.
• En programación, estas diferencias están marcadas por variables,
estructuras de datos, cadenas de caracteres, y a esta clase de
identificador se le denomina controlador, el cual será distinto para cada
uno de los objetos.
CARACTERISTICAS
8. • Clasificación: Se trata de realizar una abstracción
denominada clase, esta permite la agrupación de objetos
que comparten las mismas propiedades y
comportamiento.
• No se debe olvidar que la clase es una generalización de
objeto.
CARACTERISTICAS
9. • Encapsulación
y
ocultación
de
datos:
Una
vez
que
hemos
definido
el
objeto
podemos
modelarlo.
• Este
modelamiento
del
objeto
como
tal
consiste
en
reunir
estados
y
métodos
dentro
de
un
entorno
limitado,
en
otras
palabras
realizar
encapsulación.
• Esta
propiedad
que
proporciona
el
modelo
orientado
a
objetos
garantiza
la
integridad
de
los
datos
y
da
un
alto
nivel
de
seguridad
a
las
aplicaciones
que
se
desarrollan.
• La
idea
fundamental
que
se
maneja
con
la
encapsulación
es
reunir
estados
y
métodos
en
un
sólo
paquete,
cápsula
o
lo
que
técnicamente
se
llamaremos
objeto.
CARACTERISTICAS
10. • Un
objeto
oculta
información
a
las
otras
clases
de
la
aplicación,
la
cual
es
necesaria
para
su
funcionamiento
interno,
pero
innecesaria
para
los
demás
objetos.
Hay
variables
utilizadas
en
forma
temporal
como:
• Contadores,
• Variables
de
resultados
intermedios.
Que
ocuparían
memoria
o
interferirían
en
el
funcionamiento
del
resto
de
los
objetos.
• Mantenibilidad:
Cualidad
que
indica
que
un
programa
o
sistema
debe
ser
fácilmente
modificable.
• Reusabilidad:
Cualidad
que
nos
indica
que
partes
del
programa,
en
este
caso
objetos,
pueden
ser
reutilizados
en
la
confección
de
otros
programas.
CARACTERISTICAS
11. • Si
se
han
identificado
ciertas
características
comunes
a
un
grupo
de
objetos,
las
cuales
los
generalizan
en
su
apariencia
y
comportamiento
encontramos
una
definición
de
tipo
o
clase
de
objetos.
• Las
clases
son
una
descripción
abstracta
de
un
grupo
de
objetos
que
comparten
características
(atributos)
y
operaciones
(métodos).
• Ejemplo:
Cada objeto de la clase baraja es distinto, pero todos tienen una serie
de atributos comunes. Todas están identificadas por una letra o un
número, pertenecen a un grupo, etc. Y existen varias operaciones
comunes a todas ellas: pueden ser repartidas, pedidas, descartadas.
CLASES
12. • Los
atributos
de
los
objetos
que
forman
las
clases
y
las
operaciones
que
realizan
dependen
del
tipo
de
aplicación,
por
ejemplo
si
la
aplicación
estuviera
orientada
a
la
fabricación
de
barajas
de
cartas,
los
atributos
de
los
objetos
cambiarían,
pasando
a
ser
(por
ejemplo)
el
patrón
de
estampación,
los
colores
de
la
carta,
etc.
• Y
dentro
de
las
operaciones
comunes
estarían
las
de
imprimir,
cortar,
ordenar,
agrupar,
etc.
• Las
propiedades
de
una
clase
deben
ser
significativas
dentro
del
entorno
de
la
aplicación,
es
decir
deben
ayudarnos
en
la
identificación
clara
y
unívoca
de
cada
uno
de
los
objetos.
CARACTERISTICAS
DE
CLASES
13. //Definición de la clase
class racional
{
public:
racional(int=0, int=1);
racional suma(racional &);
racional resta(racional &);
racional multiplica(racional &);
racional divide(racional &);
void imprime();
private:
int numerador;
int denominador;
};
CLASE
RACIONAL
C++