SlideShare une entreprise Scribd logo
1  sur  100
Escuela Secundaria
         Técnica No. 4



      Tecnología: Computación


             Temática:

       El Paradigma de la
Programación Orientada a Objetos
¿Vivimos en un mundo de
       Objetos. ?
Origen del termino P O O
Los conceptos de la programación orientada a
objetos tienen origen en Simula 67, un
lenguaje        diseñado      para         hacer
simulaciones, creado por Ole – Johan Dahl y
Kristen Nvgaard del Centro de Computo
Noruego en Oslo. Según se informa, la historia
es que trabajaban en simulaciones de naves, y
fueron    confundidos    por    la     explosión
combinatoria de cómo las diversas cualidades de
diversas naves podían afectar unas a las otras.
La idea ocurrió para agrupar los diversos tipos
de naves en diversas clases de objetos, siendo
responsable cada clase de objetos de definir sus
propios datos y comportamiento.
Fueron refinados más tarde en Smalltalk, que
fue desarrollado en Simula en Xerox PARC
pero    diseñado    para   ser   un    sistema
completamente dinámico en el cual los objetos
se podrían crear y modificar "en marcha" en
lugar de tener un sistema basado en programas
estáticos.

La programación orientada a objetos tomó
posición como la metodología de programación
dominante a mediados de los años ochenta, en
gran parte debido a la influencia de C++, una
extensión del lenguaje de programación C.
C Lenguaje de Programación desarrollado por
Kernighan & Ritchie en 1972 en los laboratorios
ATT.

C++ Lenguaje de Programación desarrollado
por B. Stroustrup en los laboratorios ATT en
1980.

Su dominación fue consolidada gracias al auge
de las Interfases Gráficas de Usuario, para
los cuales la programación orientada a objetos
está particularmente bien adaptada.
¿ Que es la Programación Orientada
              a Objetos?
La Programación Orientada a Objetos (POO) es
una forma de enfocar la tarea de programación.
Los enfoques de la programación han cambiado
drásticamente desde la invención de las
computadoras, la creciente complejidad de los
programas, antes se realizaban mediante una
consola en la que se escribían las instrucciones
máquina en lenguaje binario. Esto funcionaba
porque los programas sólo tenían unos pocos
cientos de instrucciones. Cuando crecieron los
programas, se invento el lenguaje ensamblador
para que el programador pudiera manejar
programas más largos y complejos usando una
representación simbólica de las instrucciones
máquina.
Los lenguajes de alto nivel aparecieron para
proporcionar al programador más herramientas
con las cuales gestionar esa complejidad. En los
años     sesenta     nace    la   programación
estructurada, este es el método alentando por
varios lenguajes como Pascal y C. Con los
lenguajes estructurados fue posible escribir
programas moderadamente complejos de una
forma bastante sencilla. Sin embargo, usando
incluso la programación estructurada, cuando
los proyectos alcanzan cierto tamaño, su
complejidad se vuelve demasiado difícil para ser
controlada por un programador.
La Programación Orientada a Objetos toma las
mejores ideas de la programación estructurada
la combina con nuevos y poderosos conceptos
que animan o alientan una nueva visión de la
tarea de la programación. La Programación
Orientada a Objetos permite descomponer
fácilmente un problema en subgrupos de partes
relacionadas. Entonces, puede traducir estos
subgrupos en unidades auto contenidas
llamadas Objetos.
Evolución de la Programación

POO       (Programación       Orientada       a
Objetos), es un importante conjunto de
técnicas que se pueden utilizar para hacer el
desarrollo de programas más eficientes mientras
se mejora la facilidad de los programas
resultantes. En esencia, POO es un nuevo
medio de enfocar el trabajo de programación.
Sin embargo, a fin de comprender lo que es la
POO, es necesario comprender sus raíces. Así
pues, comenzaremos por examinar la historia
del proceso de programación analizada cómo
evolución y deduciendo, en consecuencia, por
qué es tan importante este concepto.
Programación Lineal
Los      lenguajes    de   programación     lineal
(BASIC, COBOL Y FORTRAN) no tenían
facilidad para reutilizar el código existente de
programas. De hecho se duplicaban segmentos
de software cada vez más en muchos
programas. Los programas se ejecutaban en
secuencias lógicas, haciendo la lógica difícil de
comprender. El control de programas era difícil y
se producían continuos saltos a lo largo del
referido programa. Aún más, los lenguajes
lineales no tenían capacidad de controlar la
visibilidad de los elementos llamados datos.
Programación Modular

El soporte más elemental de la programación
Modular llegó con la aparición de la subrutina.
Una subrutina se crea con una secuencia de
instrucciones a las que se les da un nombre
independiente; una vez que se ha definido, la
subrutina se puede ejecutar simplemente
incluyendo         el   nombre     del   programa
siempre que se requiera. Las subrutinas
proporcionan una división natural de las tareas;
que diferentes programas utilizan. Aunque las
subrutinas proporcionan el mecanismo básico de
la programación modular, se necesita mucha
disciplina para crear software bien estructurado.
Programación Estructurada
Un concepto importante en campo de la
programación estructurada: Abstracción, ya
que la Abstracción se puede definir como la
capacidad de examinar algo sin preocuparse de
los detalles internos. En un programa
estructurado, es suficiente conocer que un
procedimiento sea fiable, para que se pueda
utilizar sin tener que conocer cómo funciona su
interior. Esto se conoce como una Abstracción
funcional y es el núcleo de la programación
estructurada. Hoy casi todos los lenguajes de
programación tienen construcciones que facílitan
la programación estructurada.
Programación Orientada a Objetos

Este paradigma se basa en dividir el programa
en pequeñas unidades lógicas de código.

A estas pequeñas unidades lógicas de código se
les llama objetos.

También proporciona conceptos y herramientas
con las cuales se modela y representa el
mundo real tan fielmente como sea posible.
Programación Orientada a Objetos


Se define como el conjunto de
disciplinas   que    desarrollan  y
modelan software y que facilitan la
construcción de sistemas complejos
a partir de componentes.
Un      programa     orientado
objetos es una colección de
objetos que interactúan y se
relacionan      entre       sí.
Lenguajes de POO

Smalltalk
Objetive C
Ada 95
Java
Ocaml
Python
Delphi
Turbo Pascal
Lenguajes de POO

C Sharp
Eiffel
Ruby
Action Script
Visual Basic
PHP
Power Builder
Clarion
C++
El Paradigma de Orientación a Objetos

    Es un método que permiten que los
    problemas del mundo real sean
    expresados de modo fácil y natural, a
    través de:

   Modelización del Mundo.
   Reusabilidad.
   Mantenibilidad.
   Metodología de Software Unificada.
Modelización del Mundo

La gente entiende el mundo en términos
de objetos, por lo tanto, un programa
escrito en términos de objetos debería ser
más intuitivo y entendible que un
programa estructurado de otra forma.
Reusabilidad


Como modelos de programación los
objetos tienen alta cohesión porque los
mismos encapsulan códigos y datos.
Por eso los objetos pueden ser
reutilizados en la confección de otros
programas.
Mantenibilidad

Los objetos son más modulares. Los
efectos de los cambios en programas son
mejor localizados. Los objetos son más
fáciles de modificar.
Metodología de Software Unificada.



El análisis se hace en términos de objetos
del mundo. Si el diseño, codificación y
mantenimiento también son hechos en
términos de objetos, el proceso de
software completo será regido por un
único concepto.
Un Objeto es:
Cualquier entidad lógica del mundo
real. tanto elementos palpables como
abstractos. Cumple un determinado rol
dentro de los sistemas.
Un Objeto es:
 La Entidad Central sobre la que gira el
 Paradigma de Programación Orientada a
 Objetos.




           Objeto / Entidad
Objetos

Se definen como tipos de datos que
encapsulan con el mismo nombre
estructuras de datos y las operaciones
que manipulan esos datos.


               Datos
 Objetos =       +
             Operaciones
Objetos

Contienen características de:

Una entidad (sus datos)

 Su comportamiento o funcionamiento
(sus operaciones o procedimientos).
Los Objetos tienen:
    Identidad          Operaciones              Estado
Es el conjunto de    Es el conjunto de    Cuando     a    las
atributos     que    procedimientos       características
definen          y   que      permiten    del   objeto      le
caracterizan/di      cambiar         el   ponemos
ferencian       un   estado         del   valores.
objeto de otro.      objeto,      para     Las     variables
                     procurar             almacenan       los
                     adaptarse       al   estados de un
                     medio         y/o    objeto    en     un
                     interactuar con el   determinado
                     medio.               momento.
Ejemplo:

Para redondear estas ideas, imaginemos que
tenemos estacionado en nuestra cochera un
BMW Z4 color rojo que corre hasta 360 km/h.


                       Objeto: Automóvil
                       Marca: BMW
                       Modelo: Z4
                       Color: Rojo
                       Vel. Max.: 360 Km/h
Un objeto se compone de otros objetos:


                                     Llantas

                 Sistema de
                                                       Chasis
                 Frenos ABS




          Sistema de                                        Sistema de
           Dirección                                           Audio
                                 Vehiculo




                Aire
                                                         Suspensión
               Acond



                         Sistema
                                               Motor
                         Eléctrico
Un objeto se compone de otros objetos:


                             Volante




            Juntas
                                                     Flecha
           Homocin.

                             Dirección




                                         Barra de
                 Licuadora
                                         Dirección
Objeto

Este solo puede ser invocado a través de :
Un Mensaje, consiste de un Nombre y
opcionalmente de uno o varios parámetros.
Cuando      el    receptor     recibe    el
mensaje, hace la operación requerida de la
forma en que sabe hacerlo.
El emisor no especifica cómo debe
hacerse la operación.
Mensaje

  Objeto 1         Mensaje         Objeto 2


    Emisor                         Receptor


                             1.- Recibe el mensaje
Envía el mensaje
                             2.- Ejecuta la Operación
   al receptor.
                             Solicitada.
                             3.- Retorna información
                             de forma opcional.
El Conjunto de Mensajes
A los que un objeto puede responder se
conoce como el comportamiento del
objeto.

Cuando un objeto recibe un mensaje
realiza la operación requerida mediante la
ejecución de un método.


Un método es un algoritmo ejecutado es respuesta al envío de un
mensaje. Siempre es parte de la representación privada del
objeto. Nunca es parte de la interfaz pública.
Propiedades

    básicas

    de un:

O b j e t o.
Un objeto debe cubrir

La abstracción

El encapsulamiento

La herencia

El polimorfismo
La abstracción

Es la descripción de una
entidad del mundo real y
posterior utilización de esta
descripción en un programa.
Una buena abstracción es
aquella que enfatiza detalles
significativos al lector o
usuario y suprime detalles
que son, al menos , por el
momento       irrelevantes  o
causa de distracción.
Clase

Descripción                Teléfonos
abstracta de un             Celulares

grupo de objetos
                   Nokia     Nokia      Samsung
                   3520      3200        SX 426
Características de las Clases:

Permite crear objetos.
Permite la definición de una serie          de
atributos.
Permite la definición de una serie          de
operaciones.
Permite la definición de restricciones de   tal
manera para conservar la consistencia       de
los Datos.
Permite almacenar información de            los
objetos que componen la clase.
Sabe quienes la componen.
Permite eliminar objetos.
Los objetos que se comportan de la
manera especificada por una clase se
denominan instancias de esa clase.
Instancias

                                  Miguel
       Clase

     Estudiante                    Sofía

                                  Antonio


Los objetos son instancias de una clase
Encapsulamiento

                                                Es la propiedad
                                                que       permite
                                                asegurar que el
                                                contenido de la
                                                información de un
                                                objeto está oculto
                                                al         mundo
                                                exterior.

Permite el ocultamiento de la información y la división del programa en módulos.
Modelos o Bloques

Se implementan mediante clases, de
forma que una clase representa la
encapsulación de una abstracción. Esto
significa que cada clase tiene dos
partes:    una     interfaz    y    una
implementación. La interfaz de una
clase captura sólo su vista externa y la
implementación         contiene       la
representación de la abstracción, así
como los mecanismos que realizan el
comportamiento deseado.
Ventajas del Encapsulamiento


Reducción de la cohesión entre
distintos objetos: Lo que implica la
construcción de objetos independientes.
Cambiar un objeto no afecta al resto, sólo
al objeto en cuestión.

Localización: La información relativa a un
objeto está centrada en la definición de él
mismo y no distribuida en otros objetos.
Esto implica fácil modificación y adaptación a
los cambios, rápida ubicación de lo que hay
que cambiar.

Protección de la Integridad: sólo permite
cambiar el estado por sí mismo, a través de
sus operaciones propias. Esto asegura la
integridad y la consistencia de los datos.
Capsula


                           Datos
  Clase
             Nombre Completo, RFC, Edo Civil,
Estudiante    Edad, No. Teléfono, Domicilio.

                        Operaciones

                Estudiar, Trabajar, Tertuliar,
                 Tomar Café, Hacer Tareas
Polimorfismo



Es la propiedad que
permite que dos o
más     clases   de
objetos respondan el
mismo       mensaje
de diferente forma.
Permite reconocer y
explotar las similitudes
entre diferentes clases
de objetos.

Cuando se reconoce
que       varios    tipos
diferentes de objetos
podrían responder el
mismo      mensaje,    se
visualiza            más
claramente la distinción
entre el mensaje y el
método.
Ejemplo:

                                  Objeto        Operación


                                Básquetbol        Encestar
 Clase

Deportes   Hacer Puntos            Fútbol       Anotar un Gol


                                                 Anotar una
            Mensaje               Béisbol          Carrera


                                                 Anotar un
                             Fútbol Americano
                                                Touch Down
Herencia

Es un mecanismo que permite a un
objeto heredar propiedades de otra
clase de objetos. Permite a su vez a un
objeto     contener     sus     propios
procedimientos y heredar los mismos
de otros objetos.
Ejemplo

                                                      Padre
Las clases Hija e Hijo
heredan las propiedades
de        la       clase
Padre, incluyendo a su
vez nuevas propiedades.                     Hija                  Hijo




La herencia permite diseñar y especificar sólo las diferencias de la clase más
específica. Esto hace posible reusar tanto el comportamiento como el estado
interno.
De la herencia surgen los conceptos de:

Superclase ( Clase Base )
Subclase   ( Clase Derivada )

                         Padre          Super Clase




  Sub Clase       Hija           Hijo
Definir con programación orientada a objetos
     la jerarquía de objetos que representan las
     figuras triangulo y cuadrado.

    Super clase          Figuras Geométricas




Sub clase                                      Cuadrado
             Triangulo
Definición de las clases:


Figura:
Datos - Area, Perimetro, Forma
Métodos - CalculoArea, CalculoPerimetro, Dibujar

Triangulo:
Datos – Altura, Base
Métodos - CalculoArea, CalculoPerimetro, Dibujar

Cuadrado:
Datos - Lado
Métodos - CalculoArea, CalculoPerimetro, Dibujar

 Los métodos CalculoArea, CalculoPerímetro y Dibujar se declaran en la
 clase Figura pero se implementan en los objetos derivados, esto es dado
 que dichos procedimientos serán distintos según se trate de la figura
 triangulo o cuadrado.
CalculoArea (Triangulo) - Base * Altura / 2
CalculoPerimetro(Triangulo) – Suma de sus Lados
Dibujar(Triangulo) -

CalculoArea(Cuadrado) - Lado * Lado
CalculoPerimetro(Cuadrado) – Suma de sus Lados
Dibujar(Cuadrado) -
Constructor

Método que permite la creación       e
inicialización de los objetos.

Pueden definirse desde ninguno a varios
constructores.

Dependiendo del lenguaje, podrá ser un
método más de la clase o un método
específico de instancia (mismo nombre
que la clase).
La creación de objetos se realiza
mediante la invocación del operador
new invocando al     El constructor por
defecto, aquel que no inicializa ningún
atributo, está disponible siempre para
cada clase (no haría falta definir un
constructor para crear una instancia).
Destructor
Opuesto al constructor que especifica
las operaciones a realizar tras la
eliminación de un objeto.

 La destrucción de objetos se realiza
mediante la invocación del operador
delete invocando al El destructor por
defecto.

Muy   específico   del   lenguaje   de
Programación.
Comentarios,

identificadores y

 tipos de datos
Comentarios
C++ soporta dos tipos de comentarios:

   1. Viejo estilo C: Entre /* y */.

   2. Nuevo estilo C++: Comienzan con //.

Su efecto termina cuando se alcanza el
 final de la línea actual.
Identificadores
Son los nombres elegidos para las
variables, constantes, funciones, clases y
similares. El primer carácter debe ser una
letra o un subrayado. El resto del nombre
puede       contener      dígitos.     Los
identificadores que comienzan con dos
subrayados están reservados para uso
interno del compilador C++.
Constantes
C++ permite utilizar varios tipos de constantes:

1. Constantes enteras 440 -345
2. Constantes enteras muy grandes. Se identifican
   situando una L al final de la constante entera 33L
   -105L
3. Constantes octales o hexadecimales. Un 0 a la
   izquierda indica una constante octal y un 0x o
   bien 0X indican una constante hexadecimal 0 02
   077 0123 equivalen a 0 2 63 83 en octal 0x0 0x2
   0x3F 0x53 equivalen a 0 2 63 83 en hexadecimal
4. Constantes reales (coma flotante) 0.0 3.1416
  -99.2 C++ permite especificar constante de
  coma flotante de simple precisión (sufijo f o
  F) y doble precisión larga (sufijo l o L). 32.0f
  3.1416L

5. Constantes carácter “z” “5”

6. Constantes cadena “hola” “hoy es lunes”
Tipos de datos
    C++, igual que       C, contiene tipos
    fundamentales y      tipos derivados o
    estructurados.

    Los fundamentales son: int, char, long
    int, float, double, long double.

    Tipo vacío. El tipo vacío (void) se utiliza
    principalmente para especificar:
    Funciones que no devuelven valores.
    Punteros void, que referencian a objetos
    cuyo tipo es desconocido.
Tipos enumerados. Un tipo enumerado está
construido por una serie de constantes
simbólicas enteras.

Los tipos enumerados se tratan de modo
ligeramente diferente en C++ que en C. El
nombre de la etiqueta enum se considera
como un nombre de tipo igual que las
etiquetas de struct y unión. Por tanto se
puede declarar una variable de enumeración,
estructura o unión sin utilizar las palabras
enum, strcut o union.
C define el tipo de enum de tipo int. En C++, sin
embargo, cada tipo enumerado es su propio tipo
independiente. Esto significa que C++ no permite
que un valor int se convierta automáticamente a
un valor enum. Sin embargo, un valor enumerado
se puede utilizar en lugar de un int.
Ejemplo:

enum lugar{primero,segundo,tercero};
lugar pepe=primero; //correcto
int vencedor=pepe; //correcto
lugar juan=1; //incorrecto

  La última sentencia de asignación es
  aceptable en C pero no en C++, ya que 1 no
  es un valor definido en lugar.
Tipos referencia.
Las referencias son como alias. Son
alternativas al nombre de un objeto. Se
define un tipo referencia haciéndole
preceder por el operador de dirección &. Un
objeto referencia, igual que una constante
debe ser inicializado.
int a=50;
int &refa=a; //correcto
int &ref2a; //incorrecto: no inicializado

Todas las operaciones efectuadas sobre la
referencia se realizan sobre el propio
objeto:
refa+=5; equivale a sumar 5 a a, que vale
ahora 55
int *p=&refa; inicializa p con la dirección
de a
Operadores especiales de
                 C++
::            .*             ->*             new            delete

Resolución    Indirección    Indirección     Asigna         Libera
de ámbito     (eliminación   (eliminación    (inicializa)   almacena
(o alcance)   de             de referencia   almacena       miento
              referencia     directa)   un   miento         asignado
              directa) un    puntero a un    dinámico       por new
              puntero a un   miembro de
              miembro de     una clase
              una clase
Declaraciones y definiciones

  Declaraciones                  Definiciones
  se utilizan para           asignan memoria
   introducir un
     nombre al
compilador, pero no
se asigna memoria.
   Los términos declaración y definición tienen un
    significado distinto aunque con frecuencia se
                     intercambian.
En C++ cuando se             C++, permite mezclar
declara una estructura se    datos con funciones y
proporciona su nombre al     código ejecutable: trata
compilador pero no se        una declaración como un
asigna memoria. Cuando       tipo de sentencia y
se crea una instancia de     permite     situarla  en
la estructura es cuando se   cualquier parte como tal.
asigna memoria.              Esta característica de
                             C++ es muy cómoda ya
                             que permite declarar una
                             variable    cuando    se
                             necesite e inicializarla
                             inmediatamente.
Punteros
El especificador constante (const)

Constantes Puntero

Punteros y direcciones de constantes simbólicas

Punteros a un tipo de dato constante

El especificador de tipo volatile

Punteros a void

Salidas y entradas
El especificador constante
             (const)
 Una constante es una entidad cuyo
 valor no se puede modificar, y en
 C++, la palabra reservada const se
 utiliza para declarar una constante.

Ejemplo:
const int longitud = 20;
char array[longitud]; // válido en C++
  pero no en C
Una vez que una constante se declara
no se puede modificar dentro del
programa.

En C++ una constante debe         ser
inicializada cuando se declara.
En C++, las constantes que se declaran fuera
de una función tienen ámbito de archivo por
defecto y no se pueden ver fuera del archivo
en que están declaradas. Si se desea que una
constante se vea en más de un archivo, se
debe declarar como extern.

En C++ las constantes se pueden utilizar para
sustituir a #define.

En C:
#define PI 3.141592
#define long 128

En C++:
const PI = 3.141592
const long = 128
Constantes Punteros
Se puede definir una constante puntero en
C++. Las constantes puntero se deben
inicializar en el momento en que se
declaran. Se leen de derecha a izquierda.
void main()

{
int x=1,y;

int *const xp= &x; // xp es un puntero
constante a un int.

xp=&y; // error: el puntero es una
constante y no se puede asignar un nuevo
valor a punteros constantes.
Punteros y direcciones de
           constantes simbólicas

En    C++     se     puede      desreferenciar
el puntero (cambiar la posición actual del
puntero) y cambiar el valor de la constante.

const int x=6;

int *ip;

*ip=7;

ip = &x; //error
Punteros a un tipo de dato
            constante
Se puede declarar un puntero a un tipo de dato
constante pero no se puede desreferenciar.
const int x=6;
const int *ip; //puntero a una constante entera
int z;
                     ip=&x;
                     ip=&z;
*ip=10; //error: no se puede desreferenciar
este tipo de puntero y modificar z.
z=7; //válido: z no es una constante y se
puede cambiar.
El puntero a un tipo constante

 Es muy útil cuando se desea pasar una
 variable puntero como un argumento a
 una función pero no se desea que la
 función cambie el valor de la variable a
 la       que       está       apuntada.
El especificador de tipo
          volatile
La palabra reservada volatile se utiliza
sintácticamente igual que const, aunque
en cierto sentido tiene sentido opuesto.

La declaración de una variable volatile
indica al compilador que el valor de esa
variable puede cambiar en cualquier
momento por sucesos externos al control
del programa.
En un principio es posible que las
variables volatile se puedan modificar no
sólo por el programador sino también por
hardware o software del sistema.
Punteros a void
En C++ se puede crear un puntero
genérico que puede recibir la dirección de
cualquier tipo de dato.

void main()

{
void *p;
int a=1;
double x=2.4;
p=&a;
p=&x;
}
No se puede desrefernciar un puntero

void.void main()
{ void *p;
double x=2.5;
p=&x;
*p=3.6; // error: se desreferencia a un puntero void
}
Salida y Entradas
Las operaciones de salida y entrada se realizan
en C++, mediante flujos (streams) o secuencias
de datos. Los flujos estandar son:

cout          (flujo       de        salida)
cin        (flujo        de        entrada).
La salida fluye normalmente a la pantalla.
La entrada representa los datos que proceden
de teclado. Ambos se pueden redireccionar.
Salida

El flujo de salida se representa por el
identificador cout, que es en realidad un
objeto.

El operador << se denomina operador de
inserción y dirige el contenido de la variable
situada a su derecha al objeto situado a su
izquierda.
Salida
El equivalente en C de cout es printf.

El archivo de cabecera iostream.h contiene
las facilidades standard de entrada y salida de
                      C++.

En C++, los dispositivos de salida estandar no
requieren    la    cadena       de     formato.
Se pueden utilizar también diferente tipos de
datos, enviando cada uno de ellos a la vez al
flujo de salida. El flujo cout discierne el
formato del tipo de dato, ya que el compilador
C++ lo descifra en el momento de la
                 compilación.


El operador de inserción se puede utilizar
repetidamente    junto     con     cout.
void main()
{
int a=4;
float b=3.4;
char *texto="holan";
cout<< "entero " << a << " real " << b <<
" mensaje " << texto;
}
Mostrar por pantalla:
cout << expresión;
Pedir por teclado:
cin >> variable; La variable pude ser de cualquier tipo.

                EJEMPLO:
                #include <iostream.h>
                #include <stdio.h>
                #include <conio.h>
                void main()
                {
                  int i,j;
                  double d;
                  clrscr();
                  i=10;
                  j=15;
                  cout <<"Introducir valor: ";
                  cin>>d;
                  cout << "Estos son los valores: ";
                  cout << i << " "<< j << " "<< d;
                  getch();
                }
Salida con formato
C++ asocia un conjunto de manipuladores con
el flujo de salida, que modifican el formato por
defecto de argumentos enteros. Por ejemplo,
valores simbólicos de manipuladores son dec,
oct y hex que visualizan representaciones
decimales, octales y hexadecimales de variable.
Entrada
C++ permite la entrada de datos a
través del flujo de entrada cin.

El objeto cin es un objeto predefinido que
corresponde al flujo de entrada estandar.

Este flujo representa los datos que
proceden del teclado. El operador >> se
denomina de extracción o de lectura.
Toma el valor del objeto flujo de su
izquierda y lo situa en la variable situada
a su derecha.
C++ hereda la misma noción de bloque y
ámbito. En ambos lenguajes, el mismo
identificador  se    puede     usar   para
referenciar a objetos diferentes. Un uso
en un bloque interno oculta el uso externo
del mismo nombre. C++ introduce el
operador de resolución de ámbito o de
                 alcance.
El operador :: se utiliza para acceder a un
elemento oculto en el ámbito actual.

Su sintaxis es:
                   :: variable
Ejemplo:
#include <iostream.h>
int a;
void main()
{
float a;
a=1.5;
::a=2;
cout << "a local " << a << "n";
cout << "a global " << ::a << "n";
}
Este programa visualiza:
a local 1.5
a global 2
Este operador se utilizará también en la
gestión de clases.
La sintaxis
      en la P rogramación
            O rientada a
            O bjetos
Definición de Objetos
Tipo Objeto <NombreObjeto>
Privado
<Campo 1> <TipoDato>
<Campo 2> <TipoDato>
<Campo 3> <TipoDato>
...
<Campo n> <TipoDato>
Fin
Publico
Procedimiento <NombreProc> (lista parámetros
    formales)
Funcion <NombreFunc> (lista parámetros
    formales) <TipoDatoFuncion>
Fin-Objeto
Sintaxis de la definición de los
 procedimientos y funciones:

Procedimiento <NombreObjeto>.<NombreProc>
(lista parámetros formales)
[declaraciones]
   <cuerpo del procedimiento>
Fin

Funcion <NombreObjeto>.<NombreFunc> (lista
parámetros formales) <TipoDatoFuncion>
[declaraciones]
 <cuerpo de la funcion>
Fin
Ejemplo:
     Definir el tipo objeto Estudiante con los campos
     Nombre,            Apellido,         No.          de
     Carnet, Nota1, Nota2, Nota3, Nota4. Una función que
     calcule la media de las notas y un procedimiento que
     informe de dicha media.
Definir   el   tipo  objeto   Estudiante  con  los   campos
Nombre, Apellido, No. de Carnet, Nota1, Nota2, Nota3, Nota4.
Una función que calcule la media de las notas y un
procedimiento que informe de dicha media.

Análisis del problema:

Primero se define el tipo objeto donde los campos de datos se
establecen como privados y los métodos como públicos.
Luego se debe añadir un procedimiento a través del cual se
asigne valores a los campos del objeto.
Por último se colocará la unidad objeto dentro de un módulo
que realice la declaración de instancias del objeto y el paso de
mensajes.
Procedimiento Estudiante.Iniciar(Nom, Ape
                                             Cadena; Num Entero; N1,N2,N3,N4
                                             Real)
                                         Nombre = Nom
                                         Apellido = Ape
                                         NumCarnet = Num
Tipo Objeto Estudiante                   Nota1 = N1
Privado ‘Definición de campos            Nota2 = N2
Nombre Cadena                            Nota3 = N3
Apellido Cadena                          Nota4 = N4
NumCarnet Entero                         Fin
Nota1 Real
Nota2 Real                               Funcion Media Real
Nota3 Real                               Media = (Nota1+Nota2+Nota3+Nota4)/4
Nota4 Real                               Fin
Fin
Publico ‘Definición de la Interfaz       Procedimiento Estudiante.Mostrar
Procedimiento Iniciar(Nom, Ape Cadena;   Escribir(Nombre + ‘ ‘ Apellido)
    Num Entero;N1,N2,N3,N4 Real)         Escribir(‘Nota: ‘,Media)
Funcion Media Real                       Fin
Procedimiento Mostrar
Fin
Fin-Objeto                               Inicio Programa
                                         Variable E1 Estudiante ‘Instancia E1 de
                                              clase Estudiante
                                         Variable E2 Estudiante ‘Instancia E2 de
                                              clase Estudiante
                                         E1.Iniciar(‘Luis’,’Hernández’,348,15,18,13,
                                              17)
                                         E1.Mostrar
                                         E2.Iniciar(‘Marta’,’Blanco’,839,17,14,12,15
                                              )
                                         E2.Mostrar
                                         Fin
Agradecimientos

      MC Alexandro Uc Gonzalez.
Universidad Autonoma de Michoacán
 Lic. Leopoldo Nahúm Ramos Arano
      Conalep Plantel Zacualpan

Contenu connexe

Tendances

Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
yoiner santiago
 
Modelo entidad relación de base de datos
Modelo entidad relación de base de datosModelo entidad relación de base de datos
Modelo entidad relación de base de datos
ani_tuza
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
Angel Laverde ID
 

Tendances (20)

Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓNINTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
encapsulamiento
encapsulamientoencapsulamiento
encapsulamiento
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patrones
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Implementación de clases
Implementación de clasesImplementación de clases
Implementación de clases
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacion
 
Modelo entidad relación de base de datos
Modelo entidad relación de base de datosModelo entidad relación de base de datos
Modelo entidad relación de base de datos
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Colecciones en Python
Colecciones en PythonColecciones en Python
Colecciones en Python
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a Objetos
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma poo
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Clase 1- Enfoque Orientado a Objeto.pptx
Clase 1- Enfoque Orientado a Objeto.pptxClase 1- Enfoque Orientado a Objeto.pptx
Clase 1- Enfoque Orientado a Objeto.pptx
 
Aplicaciones RIA para una web multiplataforma
Aplicaciones RIA para una web multiplataformaAplicaciones RIA para una web multiplataforma
Aplicaciones RIA para una web multiplataforma
 
Pilares de la POO
Pilares de la POOPilares de la POO
Pilares de la POO
 

Similaire à Paradigma de poo

Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A Objetos
Andrés
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POO
Libertad25
 
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
Juan Morales
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
Jose Sanchez
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
Jonathan Hidalgo Nolasco
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
winny_arias
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
Kurt_williams
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Avanet
 

Similaire à Paradigma de poo (20)

Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A Objetos
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
POO
POOPOO
POO
 
Poovb
PoovbPoovb
Poovb
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POO
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
Compu 1
Compu 1Compu 1
Compu 1
 
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
1.1. conceptualizacion de_tecnologia_orientada_a_objetos_y_programacion_tradi...
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Fundamentos del Enfoque OO
Fundamentos del Enfoque OOFundamentos del Enfoque OO
Fundamentos del Enfoque OO
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Instituto tecnologico tulcan
Instituto tecnologico tulcanInstituto tecnologico tulcan
Instituto tecnologico tulcan
 
Abstraccion
AbstraccionAbstraccion
Abstraccion
 
Abstraccion
AbstraccionAbstraccion
Abstraccion
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
 

Paradigma de poo

  • 1. Escuela Secundaria Técnica No. 4 Tecnología: Computación Temática: El Paradigma de la Programación Orientada a Objetos
  • 2. ¿Vivimos en un mundo de Objetos. ?
  • 3. Origen del termino P O O Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole – Johan Dahl y Kristen Nvgaard del Centro de Computo Noruego en Oslo. Según se informa, la historia es que trabajaban en simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamiento.
  • 4. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos. La programación orientada a objetos tomó posición como la metodología de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C.
  • 5. C Lenguaje de Programación desarrollado por Kernighan & Ritchie en 1972 en los laboratorios ATT. C++ Lenguaje de Programación desarrollado por B. Stroustrup en los laboratorios ATT en 1980. Su dominación fue consolidada gracias al auge de las Interfases Gráficas de Usuario, para los cuales la programación orientada a objetos está particularmente bien adaptada.
  • 6. ¿ Que es la Programación Orientada a Objetos? La Programación Orientada a Objetos (POO) es una forma de enfocar la tarea de programación. Los enfoques de la programación han cambiado drásticamente desde la invención de las computadoras, la creciente complejidad de los programas, antes se realizaban mediante una consola en la que se escribían las instrucciones máquina en lenguaje binario. Esto funcionaba porque los programas sólo tenían unos pocos cientos de instrucciones. Cuando crecieron los programas, se invento el lenguaje ensamblador para que el programador pudiera manejar programas más largos y complejos usando una representación simbólica de las instrucciones máquina.
  • 7. Los lenguajes de alto nivel aparecieron para proporcionar al programador más herramientas con las cuales gestionar esa complejidad. En los años sesenta nace la programación estructurada, este es el método alentando por varios lenguajes como Pascal y C. Con los lenguajes estructurados fue posible escribir programas moderadamente complejos de una forma bastante sencilla. Sin embargo, usando incluso la programación estructurada, cuando los proyectos alcanzan cierto tamaño, su complejidad se vuelve demasiado difícil para ser controlada por un programador.
  • 8. La Programación Orientada a Objetos toma las mejores ideas de la programación estructurada la combina con nuevos y poderosos conceptos que animan o alientan una nueva visión de la tarea de la programación. La Programación Orientada a Objetos permite descomponer fácilmente un problema en subgrupos de partes relacionadas. Entonces, puede traducir estos subgrupos en unidades auto contenidas llamadas Objetos.
  • 9. Evolución de la Programación POO (Programación Orientada a Objetos), es un importante conjunto de técnicas que se pueden utilizar para hacer el desarrollo de programas más eficientes mientras se mejora la facilidad de los programas resultantes. En esencia, POO es un nuevo medio de enfocar el trabajo de programación. Sin embargo, a fin de comprender lo que es la POO, es necesario comprender sus raíces. Así pues, comenzaremos por examinar la historia del proceso de programación analizada cómo evolución y deduciendo, en consecuencia, por qué es tan importante este concepto.
  • 10. Programación Lineal Los lenguajes de programación lineal (BASIC, COBOL Y FORTRAN) no tenían facilidad para reutilizar el código existente de programas. De hecho se duplicaban segmentos de software cada vez más en muchos programas. Los programas se ejecutaban en secuencias lógicas, haciendo la lógica difícil de comprender. El control de programas era difícil y se producían continuos saltos a lo largo del referido programa. Aún más, los lenguajes lineales no tenían capacidad de controlar la visibilidad de los elementos llamados datos.
  • 11. Programación Modular El soporte más elemental de la programación Modular llegó con la aparición de la subrutina. Una subrutina se crea con una secuencia de instrucciones a las que se les da un nombre independiente; una vez que se ha definido, la subrutina se puede ejecutar simplemente incluyendo el nombre del programa siempre que se requiera. Las subrutinas proporcionan una división natural de las tareas; que diferentes programas utilizan. Aunque las subrutinas proporcionan el mecanismo básico de la programación modular, se necesita mucha disciplina para crear software bien estructurado.
  • 12. Programación Estructurada Un concepto importante en campo de la programación estructurada: Abstracción, ya que la Abstracción se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. En un programa estructurado, es suficiente conocer que un procedimiento sea fiable, para que se pueda utilizar sin tener que conocer cómo funciona su interior. Esto se conoce como una Abstracción funcional y es el núcleo de la programación estructurada. Hoy casi todos los lenguajes de programación tienen construcciones que facílitan la programación estructurada.
  • 13. Programación Orientada a Objetos Este paradigma se basa en dividir el programa en pequeñas unidades lógicas de código. A estas pequeñas unidades lógicas de código se les llama objetos. También proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.
  • 14. Programación Orientada a Objetos Se define como el conjunto de disciplinas que desarrollan y modelan software y que facilitan la construcción de sistemas complejos a partir de componentes.
  • 15. Un programa orientado objetos es una colección de objetos que interactúan y se relacionan entre sí.
  • 16. Lenguajes de POO Smalltalk Objetive C Ada 95 Java Ocaml Python Delphi Turbo Pascal
  • 17. Lenguajes de POO C Sharp Eiffel Ruby Action Script Visual Basic PHP Power Builder Clarion C++
  • 18. El Paradigma de Orientación a Objetos Es un método que permiten que los problemas del mundo real sean expresados de modo fácil y natural, a través de:  Modelización del Mundo.  Reusabilidad.  Mantenibilidad.  Metodología de Software Unificada.
  • 19. Modelización del Mundo La gente entiende el mundo en términos de objetos, por lo tanto, un programa escrito en términos de objetos debería ser más intuitivo y entendible que un programa estructurado de otra forma.
  • 20. Reusabilidad Como modelos de programación los objetos tienen alta cohesión porque los mismos encapsulan códigos y datos. Por eso los objetos pueden ser reutilizados en la confección de otros programas.
  • 21. Mantenibilidad Los objetos son más modulares. Los efectos de los cambios en programas son mejor localizados. Los objetos son más fáciles de modificar.
  • 22. Metodología de Software Unificada. El análisis se hace en términos de objetos del mundo. Si el diseño, codificación y mantenimiento también son hechos en términos de objetos, el proceso de software completo será regido por un único concepto.
  • 23. Un Objeto es: Cualquier entidad lógica del mundo real. tanto elementos palpables como abstractos. Cumple un determinado rol dentro de los sistemas.
  • 24. Un Objeto es: La Entidad Central sobre la que gira el Paradigma de Programación Orientada a Objetos. Objeto / Entidad
  • 25. Objetos Se definen como tipos de datos que encapsulan con el mismo nombre estructuras de datos y las operaciones que manipulan esos datos. Datos Objetos = + Operaciones
  • 26. Objetos Contienen características de: Una entidad (sus datos) Su comportamiento o funcionamiento (sus operaciones o procedimientos).
  • 27. Los Objetos tienen: Identidad Operaciones Estado Es el conjunto de Es el conjunto de Cuando a las atributos que procedimientos características definen y que permiten del objeto le caracterizan/di cambiar el ponemos ferencian un estado del valores. objeto de otro. objeto, para Las variables procurar almacenan los adaptarse al estados de un medio y/o objeto en un interactuar con el determinado medio. momento.
  • 28. Ejemplo: Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un BMW Z4 color rojo que corre hasta 360 km/h. Objeto: Automóvil Marca: BMW Modelo: Z4 Color: Rojo Vel. Max.: 360 Km/h
  • 29. Un objeto se compone de otros objetos: Llantas Sistema de Chasis Frenos ABS Sistema de Sistema de Dirección Audio Vehiculo Aire Suspensión Acond Sistema Motor Eléctrico
  • 30. Un objeto se compone de otros objetos: Volante Juntas Flecha Homocin. Dirección Barra de Licuadora Dirección
  • 31. Objeto Este solo puede ser invocado a través de : Un Mensaje, consiste de un Nombre y opcionalmente de uno o varios parámetros. Cuando el receptor recibe el mensaje, hace la operación requerida de la forma en que sabe hacerlo. El emisor no especifica cómo debe hacerse la operación.
  • 32. Mensaje Objeto 1 Mensaje Objeto 2 Emisor Receptor 1.- Recibe el mensaje Envía el mensaje 2.- Ejecuta la Operación al receptor. Solicitada. 3.- Retorna información de forma opcional.
  • 33. El Conjunto de Mensajes A los que un objeto puede responder se conoce como el comportamiento del objeto. Cuando un objeto recibe un mensaje realiza la operación requerida mediante la ejecución de un método. Un método es un algoritmo ejecutado es respuesta al envío de un mensaje. Siempre es parte de la representación privada del objeto. Nunca es parte de la interfaz pública.
  • 34. Propiedades básicas de un: O b j e t o.
  • 35. Un objeto debe cubrir La abstracción El encapsulamiento La herencia El polimorfismo
  • 36. La abstracción Es la descripción de una entidad del mundo real y posterior utilización de esta descripción en un programa. Una buena abstracción es aquella que enfatiza detalles significativos al lector o usuario y suprime detalles que son, al menos , por el momento irrelevantes o causa de distracción.
  • 37. Clase Descripción Teléfonos abstracta de un Celulares grupo de objetos Nokia Nokia Samsung 3520 3200 SX 426
  • 38. Características de las Clases: Permite crear objetos. Permite la definición de una serie de atributos. Permite la definición de una serie de operaciones. Permite la definición de restricciones de tal manera para conservar la consistencia de los Datos. Permite almacenar información de los objetos que componen la clase. Sabe quienes la componen. Permite eliminar objetos.
  • 39. Los objetos que se comportan de la manera especificada por una clase se denominan instancias de esa clase.
  • 40. Instancias Miguel Clase Estudiante Sofía Antonio Los objetos son instancias de una clase
  • 41. Encapsulamiento Es la propiedad que permite asegurar que el contenido de la información de un objeto está oculto al mundo exterior. Permite el ocultamiento de la información y la división del programa en módulos.
  • 42. Modelos o Bloques Se implementan mediante clases, de forma que una clase representa la encapsulación de una abstracción. Esto significa que cada clase tiene dos partes: una interfaz y una implementación. La interfaz de una clase captura sólo su vista externa y la implementación contiene la representación de la abstracción, así como los mecanismos que realizan el comportamiento deseado.
  • 43. Ventajas del Encapsulamiento Reducción de la cohesión entre distintos objetos: Lo que implica la construcción de objetos independientes. Cambiar un objeto no afecta al resto, sólo al objeto en cuestión. Localización: La información relativa a un objeto está centrada en la definición de él mismo y no distribuida en otros objetos.
  • 44. Esto implica fácil modificación y adaptación a los cambios, rápida ubicación de lo que hay que cambiar. Protección de la Integridad: sólo permite cambiar el estado por sí mismo, a través de sus operaciones propias. Esto asegura la integridad y la consistencia de los datos.
  • 45. Capsula Datos Clase Nombre Completo, RFC, Edo Civil, Estudiante Edad, No. Teléfono, Domicilio. Operaciones Estudiar, Trabajar, Tertuliar, Tomar Café, Hacer Tareas
  • 46. Polimorfismo Es la propiedad que permite que dos o más clases de objetos respondan el mismo mensaje de diferente forma.
  • 47. Permite reconocer y explotar las similitudes entre diferentes clases de objetos. Cuando se reconoce que varios tipos diferentes de objetos podrían responder el mismo mensaje, se visualiza más claramente la distinción entre el mensaje y el método.
  • 48. Ejemplo: Objeto Operación Básquetbol Encestar Clase Deportes Hacer Puntos Fútbol Anotar un Gol Anotar una Mensaje Béisbol Carrera Anotar un Fútbol Americano Touch Down
  • 49. Herencia Es un mecanismo que permite a un objeto heredar propiedades de otra clase de objetos. Permite a su vez a un objeto contener sus propios procedimientos y heredar los mismos de otros objetos.
  • 50. Ejemplo Padre Las clases Hija e Hijo heredan las propiedades de la clase Padre, incluyendo a su vez nuevas propiedades. Hija Hijo La herencia permite diseñar y especificar sólo las diferencias de la clase más específica. Esto hace posible reusar tanto el comportamiento como el estado interno.
  • 51. De la herencia surgen los conceptos de: Superclase ( Clase Base ) Subclase ( Clase Derivada ) Padre Super Clase Sub Clase Hija Hijo
  • 52. Definir con programación orientada a objetos la jerarquía de objetos que representan las figuras triangulo y cuadrado. Super clase Figuras Geométricas Sub clase Cuadrado Triangulo
  • 53. Definición de las clases: Figura: Datos - Area, Perimetro, Forma Métodos - CalculoArea, CalculoPerimetro, Dibujar Triangulo: Datos – Altura, Base Métodos - CalculoArea, CalculoPerimetro, Dibujar Cuadrado: Datos - Lado Métodos - CalculoArea, CalculoPerimetro, Dibujar Los métodos CalculoArea, CalculoPerímetro y Dibujar se declaran en la clase Figura pero se implementan en los objetos derivados, esto es dado que dichos procedimientos serán distintos según se trate de la figura triangulo o cuadrado.
  • 54. CalculoArea (Triangulo) - Base * Altura / 2 CalculoPerimetro(Triangulo) – Suma de sus Lados Dibujar(Triangulo) - CalculoArea(Cuadrado) - Lado * Lado CalculoPerimetro(Cuadrado) – Suma de sus Lados Dibujar(Cuadrado) -
  • 55. Constructor Método que permite la creación e inicialización de los objetos. Pueden definirse desde ninguno a varios constructores. Dependiendo del lenguaje, podrá ser un método más de la clase o un método específico de instancia (mismo nombre que la clase).
  • 56. La creación de objetos se realiza mediante la invocación del operador new invocando al El constructor por defecto, aquel que no inicializa ningún atributo, está disponible siempre para cada clase (no haría falta definir un constructor para crear una instancia).
  • 57. Destructor Opuesto al constructor que especifica las operaciones a realizar tras la eliminación de un objeto. La destrucción de objetos se realiza mediante la invocación del operador delete invocando al El destructor por defecto. Muy específico del lenguaje de Programación.
  • 59. Comentarios C++ soporta dos tipos de comentarios:  1. Viejo estilo C: Entre /* y */.  2. Nuevo estilo C++: Comienzan con //. Su efecto termina cuando se alcanza el final de la línea actual.
  • 60. Identificadores Son los nombres elegidos para las variables, constantes, funciones, clases y similares. El primer carácter debe ser una letra o un subrayado. El resto del nombre puede contener dígitos. Los identificadores que comienzan con dos subrayados están reservados para uso interno del compilador C++.
  • 61. Constantes C++ permite utilizar varios tipos de constantes: 1. Constantes enteras 440 -345 2. Constantes enteras muy grandes. Se identifican situando una L al final de la constante entera 33L -105L 3. Constantes octales o hexadecimales. Un 0 a la izquierda indica una constante octal y un 0x o bien 0X indican una constante hexadecimal 0 02 077 0123 equivalen a 0 2 63 83 en octal 0x0 0x2 0x3F 0x53 equivalen a 0 2 63 83 en hexadecimal
  • 62. 4. Constantes reales (coma flotante) 0.0 3.1416 -99.2 C++ permite especificar constante de coma flotante de simple precisión (sufijo f o F) y doble precisión larga (sufijo l o L). 32.0f 3.1416L 5. Constantes carácter “z” “5” 6. Constantes cadena “hola” “hoy es lunes”
  • 63. Tipos de datos C++, igual que C, contiene tipos fundamentales y tipos derivados o estructurados. Los fundamentales son: int, char, long int, float, double, long double. Tipo vacío. El tipo vacío (void) se utiliza principalmente para especificar:  Funciones que no devuelven valores.  Punteros void, que referencian a objetos cuyo tipo es desconocido.
  • 64. Tipos enumerados. Un tipo enumerado está construido por una serie de constantes simbólicas enteras. Los tipos enumerados se tratan de modo ligeramente diferente en C++ que en C. El nombre de la etiqueta enum se considera como un nombre de tipo igual que las etiquetas de struct y unión. Por tanto se puede declarar una variable de enumeración, estructura o unión sin utilizar las palabras enum, strcut o union.
  • 65. C define el tipo de enum de tipo int. En C++, sin embargo, cada tipo enumerado es su propio tipo independiente. Esto significa que C++ no permite que un valor int se convierta automáticamente a un valor enum. Sin embargo, un valor enumerado se puede utilizar en lugar de un int.
  • 66. Ejemplo: enum lugar{primero,segundo,tercero}; lugar pepe=primero; //correcto int vencedor=pepe; //correcto lugar juan=1; //incorrecto La última sentencia de asignación es aceptable en C pero no en C++, ya que 1 no es un valor definido en lugar.
  • 67. Tipos referencia. Las referencias son como alias. Son alternativas al nombre de un objeto. Se define un tipo referencia haciéndole preceder por el operador de dirección &. Un objeto referencia, igual que una constante debe ser inicializado. int a=50; int &refa=a; //correcto int &ref2a; //incorrecto: no inicializado Todas las operaciones efectuadas sobre la referencia se realizan sobre el propio objeto: refa+=5; equivale a sumar 5 a a, que vale ahora 55 int *p=&refa; inicializa p con la dirección de a
  • 68. Operadores especiales de C++ :: .* ->* new delete Resolución Indirección Indirección Asigna Libera de ámbito (eliminación (eliminación (inicializa) almacena (o alcance) de de referencia almacena miento referencia directa) un miento asignado directa) un puntero a un dinámico por new puntero a un miembro de miembro de una clase una clase
  • 69. Declaraciones y definiciones Declaraciones Definiciones se utilizan para asignan memoria introducir un nombre al compilador, pero no se asigna memoria. Los términos declaración y definición tienen un significado distinto aunque con frecuencia se intercambian.
  • 70. En C++ cuando se C++, permite mezclar declara una estructura se datos con funciones y proporciona su nombre al código ejecutable: trata compilador pero no se una declaración como un asigna memoria. Cuando tipo de sentencia y se crea una instancia de permite situarla en la estructura es cuando se cualquier parte como tal. asigna memoria. Esta característica de C++ es muy cómoda ya que permite declarar una variable cuando se necesite e inicializarla inmediatamente.
  • 72. El especificador constante (const) Constantes Puntero Punteros y direcciones de constantes simbólicas Punteros a un tipo de dato constante El especificador de tipo volatile Punteros a void Salidas y entradas
  • 73. El especificador constante (const) Una constante es una entidad cuyo valor no se puede modificar, y en C++, la palabra reservada const se utiliza para declarar una constante. Ejemplo: const int longitud = 20; char array[longitud]; // válido en C++ pero no en C
  • 74. Una vez que una constante se declara no se puede modificar dentro del programa. En C++ una constante debe ser inicializada cuando se declara.
  • 75. En C++, las constantes que se declaran fuera de una función tienen ámbito de archivo por defecto y no se pueden ver fuera del archivo en que están declaradas. Si se desea que una constante se vea en más de un archivo, se debe declarar como extern. En C++ las constantes se pueden utilizar para sustituir a #define. En C: #define PI 3.141592 #define long 128 En C++: const PI = 3.141592 const long = 128
  • 76. Constantes Punteros Se puede definir una constante puntero en C++. Las constantes puntero se deben inicializar en el momento en que se declaran. Se leen de derecha a izquierda. void main() { int x=1,y; int *const xp= &x; // xp es un puntero constante a un int. xp=&y; // error: el puntero es una constante y no se puede asignar un nuevo valor a punteros constantes.
  • 77. Punteros y direcciones de constantes simbólicas En C++ se puede desreferenciar el puntero (cambiar la posición actual del puntero) y cambiar el valor de la constante. const int x=6; int *ip; *ip=7; ip = &x; //error
  • 78. Punteros a un tipo de dato constante Se puede declarar un puntero a un tipo de dato constante pero no se puede desreferenciar. const int x=6; const int *ip; //puntero a una constante entera int z; ip=&x; ip=&z; *ip=10; //error: no se puede desreferenciar este tipo de puntero y modificar z. z=7; //válido: z no es una constante y se puede cambiar.
  • 79. El puntero a un tipo constante Es muy útil cuando se desea pasar una variable puntero como un argumento a una función pero no se desea que la función cambie el valor de la variable a la que está apuntada.
  • 80. El especificador de tipo volatile La palabra reservada volatile se utiliza sintácticamente igual que const, aunque en cierto sentido tiene sentido opuesto. La declaración de una variable volatile indica al compilador que el valor de esa variable puede cambiar en cualquier momento por sucesos externos al control del programa.
  • 81. En un principio es posible que las variables volatile se puedan modificar no sólo por el programador sino también por hardware o software del sistema.
  • 82. Punteros a void En C++ se puede crear un puntero genérico que puede recibir la dirección de cualquier tipo de dato. void main() { void *p; int a=1; double x=2.4; p=&a; p=&x; }
  • 83. No se puede desrefernciar un puntero void.void main() { void *p; double x=2.5; p=&x; *p=3.6; // error: se desreferencia a un puntero void }
  • 84. Salida y Entradas Las operaciones de salida y entrada se realizan en C++, mediante flujos (streams) o secuencias de datos. Los flujos estandar son: cout (flujo de salida) cin (flujo de entrada). La salida fluye normalmente a la pantalla. La entrada representa los datos que proceden de teclado. Ambos se pueden redireccionar.
  • 85. Salida El flujo de salida se representa por el identificador cout, que es en realidad un objeto. El operador << se denomina operador de inserción y dirige el contenido de la variable situada a su derecha al objeto situado a su izquierda.
  • 86. Salida El equivalente en C de cout es printf. El archivo de cabecera iostream.h contiene las facilidades standard de entrada y salida de C++. En C++, los dispositivos de salida estandar no requieren la cadena de formato.
  • 87. Se pueden utilizar también diferente tipos de datos, enviando cada uno de ellos a la vez al flujo de salida. El flujo cout discierne el formato del tipo de dato, ya que el compilador C++ lo descifra en el momento de la compilación. El operador de inserción se puede utilizar repetidamente junto con cout.
  • 88. void main() { int a=4; float b=3.4; char *texto="holan"; cout<< "entero " << a << " real " << b << " mensaje " << texto; }
  • 89. Mostrar por pantalla: cout << expresión; Pedir por teclado: cin >> variable; La variable pude ser de cualquier tipo. EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> void main() { int i,j; double d; clrscr(); i=10; j=15; cout <<"Introducir valor: "; cin>>d; cout << "Estos son los valores: "; cout << i << " "<< j << " "<< d; getch(); }
  • 90. Salida con formato C++ asocia un conjunto de manipuladores con el flujo de salida, que modifican el formato por defecto de argumentos enteros. Por ejemplo, valores simbólicos de manipuladores son dec, oct y hex que visualizan representaciones decimales, octales y hexadecimales de variable.
  • 91. Entrada C++ permite la entrada de datos a través del flujo de entrada cin. El objeto cin es un objeto predefinido que corresponde al flujo de entrada estandar. Este flujo representa los datos que proceden del teclado. El operador >> se denomina de extracción o de lectura. Toma el valor del objeto flujo de su izquierda y lo situa en la variable situada a su derecha.
  • 92. C++ hereda la misma noción de bloque y ámbito. En ambos lenguajes, el mismo identificador se puede usar para referenciar a objetos diferentes. Un uso en un bloque interno oculta el uso externo del mismo nombre. C++ introduce el operador de resolución de ámbito o de alcance.
  • 93. El operador :: se utiliza para acceder a un elemento oculto en el ámbito actual. Su sintaxis es: :: variable
  • 94. Ejemplo: #include <iostream.h> int a; void main() { float a; a=1.5; ::a=2; cout << "a local " << a << "n"; cout << "a global " << ::a << "n"; } Este programa visualiza: a local 1.5 a global 2 Este operador se utilizará también en la gestión de clases.
  • 95. La sintaxis en la P rogramación O rientada a O bjetos
  • 96. Definición de Objetos Tipo Objeto <NombreObjeto> Privado <Campo 1> <TipoDato> <Campo 2> <TipoDato> <Campo 3> <TipoDato> ... <Campo n> <TipoDato> Fin Publico Procedimiento <NombreProc> (lista parámetros formales) Funcion <NombreFunc> (lista parámetros formales) <TipoDatoFuncion> Fin-Objeto
  • 97. Sintaxis de la definición de los procedimientos y funciones: Procedimiento <NombreObjeto>.<NombreProc> (lista parámetros formales) [declaraciones] <cuerpo del procedimiento> Fin Funcion <NombreObjeto>.<NombreFunc> (lista parámetros formales) <TipoDatoFuncion> [declaraciones] <cuerpo de la funcion> Fin
  • 98. Ejemplo: Definir el tipo objeto Estudiante con los campos Nombre, Apellido, No. de Carnet, Nota1, Nota2, Nota3, Nota4. Una función que calcule la media de las notas y un procedimiento que informe de dicha media. Definir el tipo objeto Estudiante con los campos Nombre, Apellido, No. de Carnet, Nota1, Nota2, Nota3, Nota4. Una función que calcule la media de las notas y un procedimiento que informe de dicha media. Análisis del problema: Primero se define el tipo objeto donde los campos de datos se establecen como privados y los métodos como públicos. Luego se debe añadir un procedimiento a través del cual se asigne valores a los campos del objeto. Por último se colocará la unidad objeto dentro de un módulo que realice la declaración de instancias del objeto y el paso de mensajes.
  • 99. Procedimiento Estudiante.Iniciar(Nom, Ape Cadena; Num Entero; N1,N2,N3,N4 Real) Nombre = Nom Apellido = Ape NumCarnet = Num Tipo Objeto Estudiante Nota1 = N1 Privado ‘Definición de campos Nota2 = N2 Nombre Cadena Nota3 = N3 Apellido Cadena Nota4 = N4 NumCarnet Entero Fin Nota1 Real Nota2 Real Funcion Media Real Nota3 Real Media = (Nota1+Nota2+Nota3+Nota4)/4 Nota4 Real Fin Fin Publico ‘Definición de la Interfaz Procedimiento Estudiante.Mostrar Procedimiento Iniciar(Nom, Ape Cadena; Escribir(Nombre + ‘ ‘ Apellido) Num Entero;N1,N2,N3,N4 Real) Escribir(‘Nota: ‘,Media) Funcion Media Real Fin Procedimiento Mostrar Fin Fin-Objeto Inicio Programa Variable E1 Estudiante ‘Instancia E1 de clase Estudiante Variable E2 Estudiante ‘Instancia E2 de clase Estudiante E1.Iniciar(‘Luis’,’Hernández’,348,15,18,13, 17) E1.Mostrar E2.Iniciar(‘Marta’,’Blanco’,839,17,14,12,15 ) E2.Mostrar Fin
  • 100. Agradecimientos MC Alexandro Uc Gonzalez. Universidad Autonoma de Michoacán Lic. Leopoldo Nahúm Ramos Arano Conalep Plantel Zacualpan