SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
José Luis Dorado Belalcazar - 1367627| IPOO | [Fecha]
QUIZ
MANUAL DE C++ ORIENTADA A OBJETOS.
PÁGINA 1
MANUAL DE C++ ORIENTADA A OBJETOS.
Conceptos Básicos.
En este manual vamos a ver unos conceptos básicos de la programación en C++
y la programación orientada a objetos, y en este se les enseñara a los usuarios una
pequeña parte de como es el mundo de la programación y todo lo que conlleva.
Además tener claridad de algunos estándares o normas para programar y cumplir
con una calidad de programación, para así no incurrir en errores frecuentes y
poder disminuir el fracaso en el diseño de un código o programa.
Lenguaje de Programación.
Un lenguaje de programación es
una unión de caracteres,
símbolos, representación y
normas que permiten introducir y
tratar la información o datos en un
computador, este lenguaje es
artificial ya que es solo
comprendido por el computador y
un programa que compren los
códigos comprendidos en él.
Clases de Programación.
La programación ha ido evolucionando desde sus orígenes, donde los lenguajes
eran de muy bajo nivel y las posibilidades reducidas, depurándose cada vez más
hasta alcanzar el alto nivel y relativa facilidad actual.
PÁGINA 2
Dentro de los lenguajes artificiales existen muchos tipos, cada uno de ellos
destinado a un propósito concreto; se pueden clasificar en tres categorías:
• Lenguajes de bajo nivel.
• Lenguajes de alto nivel.
• Lenguajes de muy alto nivel.
Los primeros son lenguajes que se encuentran muy cerca de la forma interna de
comunicación del ordenador, mientras que los terceros son más parecidos al
lenguaje humano.
Atendiendo a diferentes criterios podemos clasificar los lenguajes según:
1. Primer Criterio.
Estilo de Programación
Imperativos
Conjunto de instrucción
secuenciales
Declarativos
Funcionales
Basados en funciones
formadas por
expresiones, los datos
llegan a ellas por una
serie de argumentos.
Lógicos
Basado en el calculo de
predicados.
Orientado a Objetos
Centrados en los objetos
que van a manipular y
no en la lógica requerida
para manipularlos
PÁGINA 3
2. Segundo Criterio.
3. Tercer Criterio.
Programación Orientada a Objetos.
Se Trata de llevar los conceptos del mundo real a la programación, en el mundo
real todo lo que nos rodea es un "objeto" un coche, un móvil, un ordenador. Que a
su vez tienen cosas (más objetos) el coche tiene ruedas, el móvil tiene teclas...
Y a su vez realizan cosas o sirven para el coche circula. El móvil sirve para llamar.
Entonces en programación cada vez se trata de emular más como piensa una
Herramienta de
creación y/o
ejecución.
Lenguaje
Ensamblados
Son una representación simbólica
de las instrucciones
correspondientes a una arquitectura
especifica(ensamblador)
Lenguaje
Compilados
Son traducidos desde un lenguaje de
alto nivel a lenguaje maquina o
bien, a lenguaje ensamblador.(C,
Basic, Pascal, etc.)
Lenguaje
Interpretados
Cada instrucción es analizada y
ejecutada a la vez (HTML, PHP, etc.)
Lenguaje Pre
procesados
Traducidos primeramente a un
lenguaje intermedio de mas bajo
nivel, y posteriormente ejecutados.
(Java)
Atendiendo a su
desarrollo
histórico.
Primera
Generación.
Asociados a los primeros ordenadores, muy
complicados, y en general específicos de
cada maquina.
Segunda
Generación.
Son lenguajes previos a los mas conocidos
actualmente y que se encuentran muy cerca
del lenguaje maquina. Ejemplo lenguaje
ensamblador.
Tercera
Generación.
Son los lenguajes mas utilizados
actualmente y basados en un
funcionamiento de procesos (basados en un
conjunto de instrucciones que definen la
forma de solucionar un problema)
Cuarta
Generación.
Son los basados en programación visual y
orientada a objetos.
PÁGINA 4
persona engrandeciendo la abstracción al programador de cómo funcionan e
internamente las cosas preocupándose más de hacerlas y no en cómo hacerlas.
Es muy significativo destacar que cuando
hacemos referencia a la P.O.O no estamos
hablando de unas cuantas diferencias nuevas
añadidas a un lenguaje de programación.
Estamos hablando de una nueva forma de pensar
acerca del proceso de descomposición de
problemas y de desarrollo de soluciones de
programación.
La programación orientada a objetos surge en la historia como un intento para
dominar la complicación que, de forma natural, posee el software. El concepto de
Orientación a Objetos surge en torno a 1970 de mano de Alan Ray Xerox PARC
fue una de los primeros interesados en lo que se quería imponer como un nuevo
paradigma de programación.
El Origen de la P.O.O.1
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 Nygaard, del Centro de Cómputo Noruego en Oslo. En este centro
se trabajaba en simulaciones de naves, que fueron confundidas por la explosión
combinatoria de cómo las diversas cualidades de diferentes naves podían afectar
unas a las otras. La idea surgió al agrupar los diversos tipos de naves en diversas
clases de objetos, siendo responsable cada clase de objetos de definir
sus propios datos y comportamientos. Fueron refinados más tarde en Smalltalk,
desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita
sobre Basic) pero diseñado para ser un sistema completamente dinámico en el
cual los objetos se podrían crear y modificar "sobre la marcha" (en tiempo de
ejecución) en lugar de tener un sistema basado en programas estáticos.
1
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
PÁGINA 5
La programación orientada a objetos se fue convirtiendo en el estilo 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. Su
dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario,
para las cuales la programación orientada a objetos está particularmente bien
adaptada. En este caso, se habla también de programación dirigida por eventos.
Las características de orientación a objetos fueron agregadas a muchos lenguajes
existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp y Pascal, entre otros.
La adición de estas características a los lenguajes que no fueron diseñados
inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la
capacidad de mantenimiento del código. Los lenguajes orientados a objetos
"puros", por su parte, carecían de las características de las cuales muchos
programadores habían venido a depender. Para saltar este obstáculo, se hicieron
muchas tentativas para crear nuevos lenguajes basados en métodos orientados a
objetos, pero permitiendo algunas características imperativas de maneras
"seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado
lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado
porJava, en gran parte debido a la aparición de Internet y a la implementación de
la máquina virtual de Java en la mayoría de navegadores. PHP en su versión 5 se
ha modificado; soporta una orientación completa a objetos, cumpliendo todas las
características propias de la orientación a objetos.
PÁGINA 6
Tradicionalmente, la forma de enfrentarse a esta complejidad ha sido empleando
lo que llamamos programación estructurada, que consiste en descomponer el
problema objeto de resolución en sub-problemas y más sub-problemas hasta llegar
a acciones muy simples y fáciles de codificar. Se trata de descomponer el problema
en acciones, en verbos.
En el ejemplo de un programa que resuelva ecuaciones de segundo grado,
descomponíamos el problema en las siguientes acciones: primero, pedir el valor
de los coeficientes a, b y c; después, calcular el valor del discriminante; y por último,
en función del signo del discriminante, calcular ninguna, una o dos raíces.
Como podemos ver, descomponíamos el problema en acciones, en verbos; por
ejemplo el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular…
La programación orientada a objetos es otra forma de descomponer problemas.
Este nuevo método de descomposición es la descomposición en objetos; vamos a
fijarnos no en lo que hay que hacer en el problema, sino en cuál es el escenario
real del mismo, y vamos a intentar simular ese escenario en nuestro programa.
Ejemplos de Lenguajes Orientados a Objetos.
En el caso de C++, el elemento básico no es la función, sino un componente
primordial para este estilo de programación que se denominado precisamente
objeto. Un objeto es un caso particular que representa de forma detallada y única
algo del mundo real, en donde el objeto tiene: datos que describen sus atributos y
operaciones que pueden realizarse sobre los mismos.
C++
Objective C
Java
Smalltalk
Eiffel
Lexico (en castellano)
Ruby
Python
[]SDK]]
Delphi
PowerBuilder
Maya
OCAML
Object Pascal
CLIPS
Visual .net
Actionscript
COBOL
Perl
C#
Visual Basic.NET
PHP
Simula
Corel draw
PÁGINA 7
Diferencia entre lenguajes orientados a y basados en objetos2
Los Lenguajes Basados en Objetos poseen una sintaxis y una semántica que
permiten la creación de objetos, pero no poseen todas las características
necesarias para ser considerados plenamente orientados a objetos. La
característica más comúnmente no-soportada suele ser la posibilidad de herencia.
Dentro de los Lenguajes Orientados a Objetos se hace una distinción entre L.O.O
puros (como Smalltalk, Eiffel, Java, etc.), que aunque por ser más abstractos son
más fáciles de manejar pero más lentos, no permiten otra forma de hacer las cosas
salvo la correcta, mientras que los llamados L.O.O. híbridos (C++, Object Pascal,
CLOS, Prolog++, etc.) mezclan la O.O. con otro paradigma (programación
estructurada / funcional / lógica, etc. ) y a pesar de poder ser más fáciles de
aprender, si se conocen aquellos de los que derivan, proclamarse más rápidos y
eficientes, y ofrecer otro tipo de soluciones cuando la O.O. no es lo más adecuado,
no ofrecen toda la versatilidad y potencia de una completa O.O.
2
Programación Orientada a Objetos. Castro Laura.2000/2001
PÁGINA 8
Componentes de la Programación Orientada a Objetos.
Todo lenguaje tiene unos componentes que ayudan a estructurar la función que
quieren que cumpla el programa que se piensa hacer, para ello vamos a ver los
componentes básicos de la programación orientada a objetos.
1. Objeto.
Un objeto es un caso particular que representa de forma detallada y única algo del
mundo real. O.O nos indica que todo lo que ves, sientes, toca, escuchas, etc.,
puede ser ilustrado como un objeto.
Una silla, una mesa, un palo de golf, una persona, un perro, la cartuchera, el dedo,
pelo, uña, un auto, aire, agua, todo es entendible bajo el concepto Objeto.
2. Clase.
Una clase es un conjunto que representa a los objetos de características similares.
La forma de representar una clase es así:
NombreClase
atributos
métodos
Ejemplo de clase:
a) Modelado
b) En C++.
Class nombreClase // Declaración de la clase //
{
// Aquí va la definición de variables y métodos //
}
PÁGINA 9
Ahora pasaremos a ver componentes de las clases como son los métodos y los
atributos.
2.1. Atributo.
El atributo es una especificación o característica que define la propiedad de un
objeto u clase y esta característica a su vez puede ser un valor especifico.
Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos
los automóviles.
2.2. Método.
Los métodos son un conjunto de procedimientos que permiten a un objeto ejecute
una acción o instrucción sobe sí mismo.
Ejemplo:
Cuando tienes un automóvil las acciones que puedes hacer sobre el son encender,
parar, apagar y andar el automóvil.
3. Enmascaramiento y encapsulación, ejemplo.
Encapsulamiento
El encapsulamiento consiste en unir en la Clase las características y
comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola
entidad. En los lenguajes estructurados esto era imposible. Es evidente que el
encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos
a continuación.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya
que tendremos a las Clases como cajas negras donde sólo se conoce el
comportamiento pero no los detalles internos, y esto es conveniente porque nos
interesará será conocer qué hace la Clase pero no será necesario saber cómo lo
hace.
PÁGINA 10
Ocultamiento
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase
y exponer sólo los detalles que sean necesarios para el resto del sistema.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir
porque habrá cierto comportamiento privado de la Clase que no podrá ser accedido
por otras Clases. Y controlar porque daremos ciertos mecanismos para modificar
el estado de nuestra Clase y es en estos mecanismos dónde se validarán que
algunas condiciones se cumplan. En C++ el ocultamiento se logra usando las
palabras reservadas: public, private y protected delante de las variables y métodos.
Ejemplo de Clase y Objeto.
Básicamente la clase define como representar de forma abstracta a un objeto. Así
podemos ver que: la clase auto podría definir que un auto es todo objeto que tiene
las siguientes características:
 Marca
 Modelo
 Año
 Color
 Número Puertas
 Placas
De igual forma la clase auto podría definir que todo auto tiene comportamientos
como:
 Arrancar
 Acelerar
 Frenar
 Parar
PÁGINA 11
Auto
marca
modelo
año
color
numeroPuertas
placas
arrancar
acelerar
frenar
parar
Ahora bien cuando cada una de estas características toma un valor puede
representar un auto de la vida real, a cada objeto distinto formado a partir de una
clase se le conoce como instancia.
Ahora el objeto de esta clase seria:
miCarro
Mazda
3z
2014
Negro
2
AB3 59A
arrancar
acelerar
frenar
parar
PÁGINA 12
Constructor y Destructor.
Los constructores y destructores son dos tipos de métodos especiales que se
ejecutan, respectivamente, al crear un nuevo objeto y cuando el recolector de
basura detecta que ya no lo estamos utilizando y es posible eliminarlo de la
memoria.
Constructor
Un método constructor de una clase es un método especial que:
 Tiene el mismo nombre que la clase y
 No tiene tipo de retorno.
 Inicializa el estado de un objeto.
class <identificador de clase> {
public:
<identificador de clase>(<lista de parámetros>) [:
<lista de constructores>] {
<código del constructor>
}
...
}
Constructores sin parámetros (la función constructor no acepta argumento por
lo cual no tiene parámetros)
Eje.
NombreClase ();
{ }
Constructores con parámetros (la función del constructor acepta los argumentos
que cosiste en inicializar datos con parámetros)
Eje.
NombreClase(int x, int y);
{ x= 5;
PÁGINA 13
y= 3;
}
Ejemplo:
class Cuenta {
// Variables miembro
private:
double Saldo; // Saldo Actual de la
cuenta
double Interes; // Interés aplicado
public:
// Constructor
Cuenta(double unSaldo, double unInteres);
// Acciones básicas
double GetSaldo()
{ return Saldo; }
double GetInteres()
{ return Interes; }
void SetSaldo(double unSaldo)
{ Saldo = unSaldo; }
void SetInteres(double unInteres)
{ Interes = unInteres; }
void Ingreso(double unaCantidad)
{ SetSaldo( GetSaldo() + unaCantidad ); }
};
 La definición del constructor de la clase Cuenta pudiera ser:
Cuenta::Cuenta(double unSaldo, double
unInteres)
{ //Hace llamadas los otros métodos
PÁGINA 14
SetSaldo(unSaldo);
SetInteres(unInteres);
}
 Como el constructor es una función miembro, tiene acceso directo a las
variables miembro privadas. Luego el constructor también podría definirse
del siguiente modo:
Cuenta::Cuenta(double unSaldo, double
unInteres)
{
//Asigna a los datos el valor de los
parametros
Saldo = unSaldo;
Interes = unInteres;
}
Destructor
En contraposición al constructor, el destructor elimina el vínculo y libera el espacio
de memoria de un objeto, para que pueda ser ocupado nuevamente.
La sintaxis para declarar un destructor es:
[atributos] ~ <identificador> ( )
{
// Cuerpo del destructor.
}
Notas:
 Una clase solamente puede tener un destructor.
 Los destructores no pueden heredarse o sobrecargarse.
 Los destructores no pueden invocarse, sino que son invocados
automáticamente.
 Un destructor no acepta modificadores ni parámetros.
PÁGINA 15
Por ejemplo, la siguiente es una declaración de un destructor para la clase Figura:
~Figura()
{
// Instrucciones para limpiar.
}
Ejemplo:
// Destructores.cs : Maneja tres destructores de clases encadenadas.
class Primera
{
~ Primera( )
{
C.WriteLine("Se invocó al destructor de Primera...");
}
}
class Segunda : Primera
{
~ Segunda( )
{
C.WriteLine("Se invocó al destructor de Segunda...");
}
}
class Tercera : Segunda
{
~ Tercera( )
{
C.WriteLine("Se invocó al destructor de Tercera...");
}
}
public class Principal
PÁGINA 16
{
public static void Main( )
{
Tercera t = new Tercera ( );
}
}
Aplicaciones de constructores y destructores.
En esta sección se presenta una serie de ejemplos donde se implementarán:
1.- clases que sólo poseen el constructor predeterminado.
2.- clases con un constructor definido por el programador y
3.- clases con un constructor definido por el programador y el predefinido (que
deberá ser reescrito por el programador).
El constructor predeterminado es incluido automáticamente.
Cuando el programador define un constructor, el predeterminado se anula. En caso
de requerir el constructor predeterminado junto con un constructor definido por el
programador, deberá volverse a escribir el constructor predefinido, de acuerdo al
siguiente formato:
public <nombreClase>( )
{
}
Ejemplo 1
// Uso del constructor predeterminado.(No se define otro constructor)
class Persona
{
private string nombre;
private int edad;
public void asignaNombre( string n)
{
nombre = n;
PÁGINA 17
}
public void asignaEdad( int e)
{
edad = e;
}
public string daNombre( )
{
return nombre;
}
public int daEdad( )
{
return edad ;
}
}
public class Principal
{
public static void Main( )
{
Persona p = new Persona( ) ; // Se invoca al constructor
//predeterminado.
p.asignaNombre("Luis");
p.asignaEdad(25);
C.WriteLine("Nombre: {0} , Edad: {1}", p.daNombre(),
p.daEdad());
}
}
PÁGINA 18
Generalización y encapsulamiento.
En la programación orientada a objeto el encapsulamiento es una forma para
ocultar caracterizas internas de una clase de los elementos atributos que no la
conocen otros objetos y la generalización hace parte de encapsulamiento para
generalizar los métodos, significa tomar algo específico como en te caso los
métodos. Y así podemos ocultar información privada del programador que no
quiere dar a conocer las propiedades del objeto.
Qué son atributos y métodos estáticos de una clase, ejemplo.
Los atributos y métodos de una clase en pocas palabras son aquellos que se
determinan una función para todos los objetos.
Atributos estáticos: es la función que trabaja para la clase como lo único en vez
para el objeto en particular de la clase. Es decir las características son iguales para
todos los objetos por que los atributo de la clase estático que no cambia. Y lo cual
es utilizado en C++ la palabra reservada static indica que sólo existe un espacio
de memoria por atributo para todos los objetos de la clase.
Métodos estáticos: es una función que cumple una clase para todos los objetos, no
es la venimos mencionando que los métodos son operaciones de que realiza un
objeto que usamos comúnmente si no aquí hacemos referencia más a los del clase
para que toso los objetos que pertenezcan al misma clase cumpla solamente con
esta función y los métodos estático solo pueden acceder a los atributos estáticos y
llamar a otro método estático.
Eje.
Como definir métodos estáticos en una clase.
class nombre Clase
{
public static function métodoEstatico ()
{
return "Hey, soy un método estático";
PÁGINA 19
}
}
Qué son atributos y métodos privados.
Los atributos y los métodos privados son características y operaciones de una
clase que trabaja el programador para no ser modificado el objeto ocultándose para
no ser accedido fácilmente las decisiones del objeto de la clase.
Los atributos privados: son las características del objeto que oculta la clase para
que no accedan en la definición del objeto.
Los métodos privados: son los que el programador desea ocultar para que no
puedan acceder, pero para programar solo pueden ser llamado de método de la
clase y no pueden ser llamado método privado desde donde definimos el objeto.
Los atributos y métodos privados son elegidos en encapsulamiento para proteger
información que no se debe compartir y que accedan fácilmente.
¿Cuándo elegir? es según el programador de pendiendo del programa que realiza
sea laboral y preferencia, cuando son empresa o cuando no desea dar a conocer
como lo hizo, oculta los atributos y métodos como privados de una clase para no
dar información personal o privatizando las propiedades del objeto.
En la documentación y realización de programación de la orientación a objeto en
c++, una clase preferible que los atributos como privado para no dar a conocer las
variables que trabajamos y los métodos públicos que son los que llamamos cuando
definimos un objeto determinada clase. Para mayor facilidad y poder utilizarlo para
cualquier otro método.
Son soporte donde te puedes guiar para ejecutar el programa que desee y errores
básicos que son muy comunes cuando recién empiezas como un programador del
lenguaje de C++.
“Fórmula mágica” o un formato que le sirva a alguien que nunca ha
programado en c++ para crear una clase.
//Declaramos la librerías.
PÁGINA 20
#include<iostream> //librería que permite usar cout y endl.
using namespace std; // funciones que se van a utilizar.
// Declaramos la clase
class CalcularPerimetro // llamamos la clase con (class) y nombre de la clase.
{ // Ejecutar la clase.
private: // declaramos privado lo que deseamos ocultar de la clase.
int lado1; // declaramos tipo y las variables del objeto circulo.
int lado2; // declaramos tipo y las variables del objeto cuadrado.
public: // declaramos los constructores y métodos como público.
CalcularPerimetro (int lado1, int lado2); // nombramos el constructor sin
parámetro
~CalcularPerimetro(); // nombramos el destructor.
int calcularCuadrado (int lado1); // declaramos tipo, métodos del objeto
circulo y las variables que contiene el objeto. int
calcularCuadrado (int lado); // declaramos tipo, métodos del objeto
cuadrado y las variables que contiene el objeto
}; // Cerramos la clase.
Posibles errores de consola y errores más comunes en c++ y como los
encontrarán.
Los posibles errores que ponemos encontrar se clasificas de la siguiente manera:
Por sintaxis: son aquellos errores que son fácil de detectar en el código fuente del
programa, son detalles que pasan por alto, en un momento de fan podríamos decir,
que a la hora de ejecutar nos aparece error y se produce cuando escribimos
incorrectamente algún aparte del código.
PÁGINA 21
Ejemplo:
include <stdio.h>
imt main()
{
int a, b;
a = 4;
b = a * 6;
printf( "%d", b )
retunr 0;
}
Existen cuatro errores de sintaxis:
 Se ha escrito include en vez de #include.
 Se ha escrito imt en vez de int.
 Falta un punto y coma (;) después de la llamada a printf.
 Se ha escrito retunr en vez de return.
Por ejecución: son aquellos que cuando el programa funciona correctamente sin
errores de sintaxis, se produce cuando el programa no ejecuta algunas
instrucciones de forma correcta.
Ejemplo:
#include <stdio.h>
int main()
{
int a;
float b;
a = 0;
b = 6.4 / a;
printf( "%f", b );
return 0;
}
Se produce un error de ejecución, ya que, al intentar evaluar la expresión:
6.4/a; ‘a’ vale 0, y no se puede dividir entre cero.
PÁGINA 22
Por lógica: son más complicados de detectar.es los que el programa se ejecuta
correctamente pero no funciona bien esto es debido a un error lógico que se
produce cuando los resultados obtenidos no son los esperados. Como podemos
ver a continuación.
Ejemplo:
#include <stdio.h>
int main()
{
float base, altura;
base = 6.3;
altura = 4.;
printf( "El area es: %f", base * altura / 3 );
return 0;
}
Su salida por pantalla es:
El área es: 8.4
No existen errores de sintaxis ni de ejecución, sin embargo, la salida esperada es:
El área es: 12.6
Por consiguiente, existe algún error lógico que hay que corregir. El error está en la
expresión:
Base * altura / 3
Que, aunque no es incorrecta, no sirve para calcular el área de un triángulo. En su
lugar se debe escribir:
Base * altura / 2
PÁGINA 23
Test.
1. ¿Los paradigmas de la Programación Orientada a Objetos (POO) son?
b) Herencia
c) Extensibilidad
d) Polimorfismo
e) Encapsulamiento
2. ¿Las características fundamentales de un “objeto” son:?
a) Estado
b) Identificación
c) Comportamiento
d) Clasificación
3. ¿Es una agrupación de objetos con características semejantes:?
a) atributo
b) método
c) objeto
d) Clase
4. ¿El encapsulamiento?
a) Proteger las características de un objeto
b) Implementar la reutilización y extensibilidad del Software
c) Modificar los métodos heredados de una superclase
5. Los paradigmas de la Programación Orientada a Objetos (POO) son:
a) Herencia
PÁGINA 24
b) Extensibilidad
c) Polimorfismo
d) Encapsulamiento.
6. Las características fundamentales de un “objeto” son:
a) Estado
b) Identificación
c) Comportamiento
d) Clasificación
7. Es una agrupación de objetos con características semejantes
a) Atributo
b) método
c) objeto
d) Clase
8. El encapsulamiento
a) Proteger las características de un objeto
b) Implementar la reutilización y extensibilidad del Software
c) Modificar los métodos heredados de una superclase
9. ¿Cuál es la descripción que crees que define mejor el concepto 'clase' en la
programación orientada a objetos?
a) Es un concepto similar al de 'array'
b) Es un tipo particular de variable
c) Es un modelo o plantilla a partir de la cual creamos objetos
d) Es una categoría de datos ordenada secuencialmente
10.¿Qué elementos crees que definen a un objeto?
PÁGINA 25
a) Sus cardinalidad y su tipo
b) Sus atributos y sus métodos
c) La forma en que establece comunicación e intercambia mensajes
d) Su interfaz y los eventos asociados

Weitere ähnliche Inhalte

Was ist angesagt?

Ejemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadasEjemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadas
Kenny Cash
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
Alcoverify
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
Roberth Loaiza
 
Semana 1 t sistema de base de datos
Semana 1 t sistema de base de datosSemana 1 t sistema de base de datos
Semana 1 t sistema de base de datos
erickrwk
 
Farmacia
FarmaciaFarmacia
Farmacia
d3m3nt3
 
Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysql
Giovanni Peruch
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
Walter Chacon
 

Was ist angesagt? (20)

Ejemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadasEjemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadas
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Bases de Datos de Tercera Generacion
Bases de Datos de Tercera GeneracionBases de Datos de Tercera Generacion
Bases de Datos de Tercera Generacion
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
 
Cálculo integral grupo # 10
Cálculo integral grupo # 10Cálculo integral grupo # 10
Cálculo integral grupo # 10
 
Modelo Persistente
Modelo PersistenteModelo Persistente
Modelo Persistente
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Semana 1 t sistema de base de datos
Semana 1 t sistema de base de datosSemana 1 t sistema de base de datos
Semana 1 t sistema de base de datos
 
BASE DE DATOS LIBRERIA
BASE DE DATOS LIBRERIABASE DE DATOS LIBRERIA
BASE DE DATOS LIBRERIA
 
Seguridad en Base de Datos
Seguridad en Base de DatosSeguridad en Base de Datos
Seguridad en Base de Datos
 
Modelos de software ventajas y desventajas
Modelos de software ventajas y desventajasModelos de software ventajas y desventajas
Modelos de software ventajas y desventajas
 
Farmacia
FarmaciaFarmacia
Farmacia
 
Presentación de Netbeans
Presentación de NetbeansPresentación de Netbeans
Presentación de Netbeans
 
HA2NV50 EQ8-StarUML
HA2NV50 EQ8-StarUMLHA2NV50 EQ8-StarUML
HA2NV50 EQ8-StarUML
 
Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysql
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
 
Proyecto De Base De Datos
Proyecto De Base De DatosProyecto De Base De Datos
Proyecto De Base De Datos
 
Conexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLConexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQL
 
Mongo db
Mongo dbMongo db
Mongo db
 
Vectores informaticos
Vectores informaticosVectores informaticos
Vectores informaticos
 

Andere mochten auch (9)

grp presentation
grp presentationgrp presentation
grp presentation
 
Thesis Defense-2
Thesis Defense-2Thesis Defense-2
Thesis Defense-2
 
Raft polymerization
Raft polymerizationRaft polymerization
Raft polymerization
 
Polymerization techniques
Polymerization techniquesPolymerization techniques
Polymerization techniques
 
Polymers evs ppt (3)
Polymers evs ppt (3)Polymers evs ppt (3)
Polymers evs ppt (3)
 
Polymer
PolymerPolymer
Polymer
 
Polymer
PolymerPolymer
Polymer
 
Polymers
PolymersPolymers
Polymers
 
Polymer ppt
Polymer pptPolymer ppt
Polymer ppt
 

Ähnlich wie POO

Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
winny_arias
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
Kurt_williams
 
Lenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosLenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetos
RicardoAlbertoSalmor
 
Programacin orientada a objetos
Programacin orientada a objetosProgramacin orientada a objetos
Programacin orientada a objetos
grachika
 
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
 
Banco de reactivos total
Banco de reactivos totalBanco de reactivos total
Banco de reactivos total
Janeth Mtz
 

Ähnlich wie POO (20)

Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Tarea 5. investigacion
Tarea 5. investigacionTarea 5. investigacion
Tarea 5. investigacion
 
Evoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýnEvoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýn
 
Lenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosLenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetos
 
Conceptos basicos de poo
Conceptos basicos de pooConceptos basicos de poo
Conceptos basicos de poo
 
U1T2 - El concepto de la programación Vs el concepto de la MetodologíaU1 t2 e...
U1T2 - El concepto de la programación Vs el concepto de la MetodologíaU1 t2 e...U1T2 - El concepto de la programación Vs el concepto de la MetodologíaU1 t2 e...
U1T2 - El concepto de la programación Vs el concepto de la MetodologíaU1 t2 e...
 
Programacin orientada a objetos
Programacin orientada a objetosProgramacin orientada a objetos
Programacin orientada a objetos
 
Paradigma de poo
Paradigma de pooParadigma de poo
Paradigma de poo
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
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
 
Consulta c++
Consulta c++Consulta c++
Consulta c++
 
Act 5.1
Act 5.1Act 5.1
Act 5.1
 
Act 5.1
Act 5.1Act 5.1
Act 5.1
 
Progra
PrograProgra
Progra
 
Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
Banco de reactivos total
Banco de reactivos totalBanco de reactivos total
Banco de reactivos total
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Tarea3
Tarea3 Tarea3
Tarea3
 

Mehr von Jose Luis Dorao

Mehr von Jose Luis Dorao (11)

El problema de la mochila
El problema de la mochilaEl problema de la mochila
El problema de la mochila
 
Fundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADAFundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADA
 
Metáfora de interfaces de usuarios
Metáfora de interfaces de usuariosMetáfora de interfaces de usuarios
Metáfora de interfaces de usuarios
 
Estándares para el diseño de interfaz
Estándares para el diseño de interfazEstándares para el diseño de interfaz
Estándares para el diseño de interfaz
 
Programación extrema xp
Programación extrema xpProgramación extrema xp
Programación extrema xp
 
Compuertas Logicas simplicación y dibujo de los circuitos
Compuertas Logicas simplicación y dibujo de los circuitosCompuertas Logicas simplicación y dibujo de los circuitos
Compuertas Logicas simplicación y dibujo de los circuitos
 
Construir el circuito solo con las compuertas nand y nor
Construir el circuito solo con las compuertas nand y norConstruir el circuito solo con las compuertas nand y nor
Construir el circuito solo con las compuertas nand y nor
 
Compuertas Lógicas y Diseño
Compuertas Lógicas y DiseñoCompuertas Lógicas y Diseño
Compuertas Lógicas y Diseño
 
HTML5
HTML5HTML5
HTML5
 
Exposicion GWT
Exposicion GWTExposicion GWT
Exposicion GWT
 
Guia completa-de-google-uso-practico-para-particulares-y-empresas
Guia completa-de-google-uso-practico-para-particulares-y-empresasGuia completa-de-google-uso-practico-para-particulares-y-empresas
Guia completa-de-google-uso-practico-para-particulares-y-empresas
 

Kürzlich hochgeladen

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 

Kürzlich hochgeladen (20)

CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptos
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
Sesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxSesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptx
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Control estadistico de procesos Primera parte.pdf
Control estadistico de procesos Primera parte.pdfControl estadistico de procesos Primera parte.pdf
Control estadistico de procesos Primera parte.pdf
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
 
Tabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docxTabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docx
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 

POO

  • 1. José Luis Dorado Belalcazar - 1367627| IPOO | [Fecha] QUIZ MANUAL DE C++ ORIENTADA A OBJETOS.
  • 2. PÁGINA 1 MANUAL DE C++ ORIENTADA A OBJETOS. Conceptos Básicos. En este manual vamos a ver unos conceptos básicos de la programación en C++ y la programación orientada a objetos, y en este se les enseñara a los usuarios una pequeña parte de como es el mundo de la programación y todo lo que conlleva. Además tener claridad de algunos estándares o normas para programar y cumplir con una calidad de programación, para así no incurrir en errores frecuentes y poder disminuir el fracaso en el diseño de un código o programa. Lenguaje de Programación. Un lenguaje de programación es una unión de caracteres, símbolos, representación y normas que permiten introducir y tratar la información o datos en un computador, este lenguaje es artificial ya que es solo comprendido por el computador y un programa que compren los códigos comprendidos en él. Clases de Programación. La programación ha ido evolucionando desde sus orígenes, donde los lenguajes eran de muy bajo nivel y las posibilidades reducidas, depurándose cada vez más hasta alcanzar el alto nivel y relativa facilidad actual.
  • 3. PÁGINA 2 Dentro de los lenguajes artificiales existen muchos tipos, cada uno de ellos destinado a un propósito concreto; se pueden clasificar en tres categorías: • Lenguajes de bajo nivel. • Lenguajes de alto nivel. • Lenguajes de muy alto nivel. Los primeros son lenguajes que se encuentran muy cerca de la forma interna de comunicación del ordenador, mientras que los terceros son más parecidos al lenguaje humano. Atendiendo a diferentes criterios podemos clasificar los lenguajes según: 1. Primer Criterio. Estilo de Programación Imperativos Conjunto de instrucción secuenciales Declarativos Funcionales Basados en funciones formadas por expresiones, los datos llegan a ellas por una serie de argumentos. Lógicos Basado en el calculo de predicados. Orientado a Objetos Centrados en los objetos que van a manipular y no en la lógica requerida para manipularlos
  • 4. PÁGINA 3 2. Segundo Criterio. 3. Tercer Criterio. Programación Orientada a Objetos. Se Trata de llevar los conceptos del mundo real a la programación, en el mundo real todo lo que nos rodea es un "objeto" un coche, un móvil, un ordenador. Que a su vez tienen cosas (más objetos) el coche tiene ruedas, el móvil tiene teclas... Y a su vez realizan cosas o sirven para el coche circula. El móvil sirve para llamar. Entonces en programación cada vez se trata de emular más como piensa una Herramienta de creación y/o ejecución. Lenguaje Ensamblados Son una representación simbólica de las instrucciones correspondientes a una arquitectura especifica(ensamblador) Lenguaje Compilados Son traducidos desde un lenguaje de alto nivel a lenguaje maquina o bien, a lenguaje ensamblador.(C, Basic, Pascal, etc.) Lenguaje Interpretados Cada instrucción es analizada y ejecutada a la vez (HTML, PHP, etc.) Lenguaje Pre procesados Traducidos primeramente a un lenguaje intermedio de mas bajo nivel, y posteriormente ejecutados. (Java) Atendiendo a su desarrollo histórico. Primera Generación. Asociados a los primeros ordenadores, muy complicados, y en general específicos de cada maquina. Segunda Generación. Son lenguajes previos a los mas conocidos actualmente y que se encuentran muy cerca del lenguaje maquina. Ejemplo lenguaje ensamblador. Tercera Generación. Son los lenguajes mas utilizados actualmente y basados en un funcionamiento de procesos (basados en un conjunto de instrucciones que definen la forma de solucionar un problema) Cuarta Generación. Son los basados en programación visual y orientada a objetos.
  • 5. PÁGINA 4 persona engrandeciendo la abstracción al programador de cómo funcionan e internamente las cosas preocupándose más de hacerlas y no en cómo hacerlas. Es muy significativo destacar que cuando hacemos referencia a la P.O.O no estamos hablando de unas cuantas diferencias nuevas añadidas a un lenguaje de programación. Estamos hablando de una nueva forma de pensar acerca del proceso de descomposición de problemas y de desarrollo de soluciones de programación. La programación orientada a objetos surge en la historia como un intento para dominar la complicación que, de forma natural, posee el software. El concepto de Orientación a Objetos surge en torno a 1970 de mano de Alan Ray Xerox PARC fue una de los primeros interesados en lo que se quería imponer como un nuevo paradigma de programación. El Origen de la P.O.O.1 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 Nygaard, del Centro de Cómputo Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves podían afectar unas a las otras. La idea surgió al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "sobre la marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos. 1 http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
  • 6. PÁGINA 5 La programación orientada a objetos se fue convirtiendo en el estilo 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. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se habla también de programación dirigida por eventos. Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp y Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por su parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado porJava, en gran parte debido a la aparición de Internet y a la implementación de la máquina virtual de Java en la mayoría de navegadores. PHP en su versión 5 se ha modificado; soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.
  • 7. PÁGINA 6 Tradicionalmente, la forma de enfrentarse a esta complejidad ha sido empleando lo que llamamos programación estructurada, que consiste en descomponer el problema objeto de resolución en sub-problemas y más sub-problemas hasta llegar a acciones muy simples y fáciles de codificar. Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de un programa que resuelva ecuaciones de segundo grado, descomponíamos el problema en las siguientes acciones: primero, pedir el valor de los coeficientes a, b y c; después, calcular el valor del discriminante; y por último, en función del signo del discriminante, calcular ninguna, una o dos raíces. Como podemos ver, descomponíamos el problema en acciones, en verbos; por ejemplo el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular… La programación orientada a objetos es otra forma de descomponer problemas. Este nuevo método de descomposición es la descomposición en objetos; vamos a fijarnos no en lo que hay que hacer en el problema, sino en cuál es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa. Ejemplos de Lenguajes Orientados a Objetos. En el caso de C++, el elemento básico no es la función, sino un componente primordial para este estilo de programación que se denominado precisamente objeto. Un objeto es un caso particular que representa de forma detallada y única algo del mundo real, en donde el objeto tiene: datos que describen sus atributos y operaciones que pueden realizarse sobre los mismos. C++ Objective C Java Smalltalk Eiffel Lexico (en castellano) Ruby Python []SDK]] Delphi PowerBuilder Maya OCAML Object Pascal CLIPS Visual .net Actionscript COBOL Perl C# Visual Basic.NET PHP Simula Corel draw
  • 8. PÁGINA 7 Diferencia entre lenguajes orientados a y basados en objetos2 Los Lenguajes Basados en Objetos poseen una sintaxis y una semántica que permiten la creación de objetos, pero no poseen todas las características necesarias para ser considerados plenamente orientados a objetos. La característica más comúnmente no-soportada suele ser la posibilidad de herencia. Dentro de los Lenguajes Orientados a Objetos se hace una distinción entre L.O.O puros (como Smalltalk, Eiffel, Java, etc.), que aunque por ser más abstractos son más fáciles de manejar pero más lentos, no permiten otra forma de hacer las cosas salvo la correcta, mientras que los llamados L.O.O. híbridos (C++, Object Pascal, CLOS, Prolog++, etc.) mezclan la O.O. con otro paradigma (programación estructurada / funcional / lógica, etc. ) y a pesar de poder ser más fáciles de aprender, si se conocen aquellos de los que derivan, proclamarse más rápidos y eficientes, y ofrecer otro tipo de soluciones cuando la O.O. no es lo más adecuado, no ofrecen toda la versatilidad y potencia de una completa O.O. 2 Programación Orientada a Objetos. Castro Laura.2000/2001
  • 9. PÁGINA 8 Componentes de la Programación Orientada a Objetos. Todo lenguaje tiene unos componentes que ayudan a estructurar la función que quieren que cumpla el programa que se piensa hacer, para ello vamos a ver los componentes básicos de la programación orientada a objetos. 1. Objeto. Un objeto es un caso particular que representa de forma detallada y única algo del mundo real. O.O nos indica que todo lo que ves, sientes, toca, escuchas, etc., puede ser ilustrado como un objeto. Una silla, una mesa, un palo de golf, una persona, un perro, la cartuchera, el dedo, pelo, uña, un auto, aire, agua, todo es entendible bajo el concepto Objeto. 2. Clase. Una clase es un conjunto que representa a los objetos de características similares. La forma de representar una clase es así: NombreClase atributos métodos Ejemplo de clase: a) Modelado b) En C++. Class nombreClase // Declaración de la clase // { // Aquí va la definición de variables y métodos // }
  • 10. PÁGINA 9 Ahora pasaremos a ver componentes de las clases como son los métodos y los atributos. 2.1. Atributo. El atributo es una especificación o característica que define la propiedad de un objeto u clase y esta característica a su vez puede ser un valor especifico. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles. 2.2. Método. Los métodos son un conjunto de procedimientos que permiten a un objeto ejecute una acción o instrucción sobe sí mismo. Ejemplo: Cuando tienes un automóvil las acciones que puedes hacer sobre el son encender, parar, apagar y andar el automóvil. 3. Enmascaramiento y encapsulación, ejemplo. Encapsulamiento El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.
  • 11. PÁGINA 10 Ocultamiento Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer sólo los detalles que sean necesarios para el resto del sistema. El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque habrá cierto comportamiento privado de la Clase que no podrá ser accedido por otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos mecanismos dónde se validarán que algunas condiciones se cumplan. En C++ el ocultamiento se logra usando las palabras reservadas: public, private y protected delante de las variables y métodos. Ejemplo de Clase y Objeto. Básicamente la clase define como representar de forma abstracta a un objeto. Así podemos ver que: la clase auto podría definir que un auto es todo objeto que tiene las siguientes características:  Marca  Modelo  Año  Color  Número Puertas  Placas De igual forma la clase auto podría definir que todo auto tiene comportamientos como:  Arrancar  Acelerar  Frenar  Parar
  • 12. PÁGINA 11 Auto marca modelo año color numeroPuertas placas arrancar acelerar frenar parar Ahora bien cuando cada una de estas características toma un valor puede representar un auto de la vida real, a cada objeto distinto formado a partir de una clase se le conoce como instancia. Ahora el objeto de esta clase seria: miCarro Mazda 3z 2014 Negro 2 AB3 59A arrancar acelerar frenar parar
  • 13. PÁGINA 12 Constructor y Destructor. Los constructores y destructores son dos tipos de métodos especiales que se ejecutan, respectivamente, al crear un nuevo objeto y cuando el recolector de basura detecta que ya no lo estamos utilizando y es posible eliminarlo de la memoria. Constructor Un método constructor de una clase es un método especial que:  Tiene el mismo nombre que la clase y  No tiene tipo de retorno.  Inicializa el estado de un objeto. class <identificador de clase> { public: <identificador de clase>(<lista de parámetros>) [: <lista de constructores>] { <código del constructor> } ... } Constructores sin parámetros (la función constructor no acepta argumento por lo cual no tiene parámetros) Eje. NombreClase (); { } Constructores con parámetros (la función del constructor acepta los argumentos que cosiste en inicializar datos con parámetros) Eje. NombreClase(int x, int y); { x= 5;
  • 14. PÁGINA 13 y= 3; } Ejemplo: class Cuenta { // Variables miembro private: double Saldo; // Saldo Actual de la cuenta double Interes; // Interés aplicado public: // Constructor Cuenta(double unSaldo, double unInteres); // Acciones básicas double GetSaldo() { return Saldo; } double GetInteres() { return Interes; } void SetSaldo(double unSaldo) { Saldo = unSaldo; } void SetInteres(double unInteres) { Interes = unInteres; } void Ingreso(double unaCantidad) { SetSaldo( GetSaldo() + unaCantidad ); } };  La definición del constructor de la clase Cuenta pudiera ser: Cuenta::Cuenta(double unSaldo, double unInteres) { //Hace llamadas los otros métodos
  • 15. PÁGINA 14 SetSaldo(unSaldo); SetInteres(unInteres); }  Como el constructor es una función miembro, tiene acceso directo a las variables miembro privadas. Luego el constructor también podría definirse del siguiente modo: Cuenta::Cuenta(double unSaldo, double unInteres) { //Asigna a los datos el valor de los parametros Saldo = unSaldo; Interes = unInteres; } Destructor En contraposición al constructor, el destructor elimina el vínculo y libera el espacio de memoria de un objeto, para que pueda ser ocupado nuevamente. La sintaxis para declarar un destructor es: [atributos] ~ <identificador> ( ) { // Cuerpo del destructor. } Notas:  Una clase solamente puede tener un destructor.  Los destructores no pueden heredarse o sobrecargarse.  Los destructores no pueden invocarse, sino que son invocados automáticamente.  Un destructor no acepta modificadores ni parámetros.
  • 16. PÁGINA 15 Por ejemplo, la siguiente es una declaración de un destructor para la clase Figura: ~Figura() { // Instrucciones para limpiar. } Ejemplo: // Destructores.cs : Maneja tres destructores de clases encadenadas. class Primera { ~ Primera( ) { C.WriteLine("Se invocó al destructor de Primera..."); } } class Segunda : Primera { ~ Segunda( ) { C.WriteLine("Se invocó al destructor de Segunda..."); } } class Tercera : Segunda { ~ Tercera( ) { C.WriteLine("Se invocó al destructor de Tercera..."); } } public class Principal
  • 17. PÁGINA 16 { public static void Main( ) { Tercera t = new Tercera ( ); } } Aplicaciones de constructores y destructores. En esta sección se presenta una serie de ejemplos donde se implementarán: 1.- clases que sólo poseen el constructor predeterminado. 2.- clases con un constructor definido por el programador y 3.- clases con un constructor definido por el programador y el predefinido (que deberá ser reescrito por el programador). El constructor predeterminado es incluido automáticamente. Cuando el programador define un constructor, el predeterminado se anula. En caso de requerir el constructor predeterminado junto con un constructor definido por el programador, deberá volverse a escribir el constructor predefinido, de acuerdo al siguiente formato: public <nombreClase>( ) { } Ejemplo 1 // Uso del constructor predeterminado.(No se define otro constructor) class Persona { private string nombre; private int edad; public void asignaNombre( string n) { nombre = n;
  • 18. PÁGINA 17 } public void asignaEdad( int e) { edad = e; } public string daNombre( ) { return nombre; } public int daEdad( ) { return edad ; } } public class Principal { public static void Main( ) { Persona p = new Persona( ) ; // Se invoca al constructor //predeterminado. p.asignaNombre("Luis"); p.asignaEdad(25); C.WriteLine("Nombre: {0} , Edad: {1}", p.daNombre(), p.daEdad()); } }
  • 19. PÁGINA 18 Generalización y encapsulamiento. En la programación orientada a objeto el encapsulamiento es una forma para ocultar caracterizas internas de una clase de los elementos atributos que no la conocen otros objetos y la generalización hace parte de encapsulamiento para generalizar los métodos, significa tomar algo específico como en te caso los métodos. Y así podemos ocultar información privada del programador que no quiere dar a conocer las propiedades del objeto. Qué son atributos y métodos estáticos de una clase, ejemplo. Los atributos y métodos de una clase en pocas palabras son aquellos que se determinan una función para todos los objetos. Atributos estáticos: es la función que trabaja para la clase como lo único en vez para el objeto en particular de la clase. Es decir las características son iguales para todos los objetos por que los atributo de la clase estático que no cambia. Y lo cual es utilizado en C++ la palabra reservada static indica que sólo existe un espacio de memoria por atributo para todos los objetos de la clase. Métodos estáticos: es una función que cumple una clase para todos los objetos, no es la venimos mencionando que los métodos son operaciones de que realiza un objeto que usamos comúnmente si no aquí hacemos referencia más a los del clase para que toso los objetos que pertenezcan al misma clase cumpla solamente con esta función y los métodos estático solo pueden acceder a los atributos estáticos y llamar a otro método estático. Eje. Como definir métodos estáticos en una clase. class nombre Clase { public static function métodoEstatico () { return "Hey, soy un método estático";
  • 20. PÁGINA 19 } } Qué son atributos y métodos privados. Los atributos y los métodos privados son características y operaciones de una clase que trabaja el programador para no ser modificado el objeto ocultándose para no ser accedido fácilmente las decisiones del objeto de la clase. Los atributos privados: son las características del objeto que oculta la clase para que no accedan en la definición del objeto. Los métodos privados: son los que el programador desea ocultar para que no puedan acceder, pero para programar solo pueden ser llamado de método de la clase y no pueden ser llamado método privado desde donde definimos el objeto. Los atributos y métodos privados son elegidos en encapsulamiento para proteger información que no se debe compartir y que accedan fácilmente. ¿Cuándo elegir? es según el programador de pendiendo del programa que realiza sea laboral y preferencia, cuando son empresa o cuando no desea dar a conocer como lo hizo, oculta los atributos y métodos como privados de una clase para no dar información personal o privatizando las propiedades del objeto. En la documentación y realización de programación de la orientación a objeto en c++, una clase preferible que los atributos como privado para no dar a conocer las variables que trabajamos y los métodos públicos que son los que llamamos cuando definimos un objeto determinada clase. Para mayor facilidad y poder utilizarlo para cualquier otro método. Son soporte donde te puedes guiar para ejecutar el programa que desee y errores básicos que son muy comunes cuando recién empiezas como un programador del lenguaje de C++. “Fórmula mágica” o un formato que le sirva a alguien que nunca ha programado en c++ para crear una clase. //Declaramos la librerías.
  • 21. PÁGINA 20 #include<iostream> //librería que permite usar cout y endl. using namespace std; // funciones que se van a utilizar. // Declaramos la clase class CalcularPerimetro // llamamos la clase con (class) y nombre de la clase. { // Ejecutar la clase. private: // declaramos privado lo que deseamos ocultar de la clase. int lado1; // declaramos tipo y las variables del objeto circulo. int lado2; // declaramos tipo y las variables del objeto cuadrado. public: // declaramos los constructores y métodos como público. CalcularPerimetro (int lado1, int lado2); // nombramos el constructor sin parámetro ~CalcularPerimetro(); // nombramos el destructor. int calcularCuadrado (int lado1); // declaramos tipo, métodos del objeto circulo y las variables que contiene el objeto. int calcularCuadrado (int lado); // declaramos tipo, métodos del objeto cuadrado y las variables que contiene el objeto }; // Cerramos la clase. Posibles errores de consola y errores más comunes en c++ y como los encontrarán. Los posibles errores que ponemos encontrar se clasificas de la siguiente manera: Por sintaxis: son aquellos errores que son fácil de detectar en el código fuente del programa, son detalles que pasan por alto, en un momento de fan podríamos decir, que a la hora de ejecutar nos aparece error y se produce cuando escribimos incorrectamente algún aparte del código.
  • 22. PÁGINA 21 Ejemplo: include <stdio.h> imt main() { int a, b; a = 4; b = a * 6; printf( "%d", b ) retunr 0; } Existen cuatro errores de sintaxis:  Se ha escrito include en vez de #include.  Se ha escrito imt en vez de int.  Falta un punto y coma (;) después de la llamada a printf.  Se ha escrito retunr en vez de return. Por ejecución: son aquellos que cuando el programa funciona correctamente sin errores de sintaxis, se produce cuando el programa no ejecuta algunas instrucciones de forma correcta. Ejemplo: #include <stdio.h> int main() { int a; float b; a = 0; b = 6.4 / a; printf( "%f", b ); return 0; } Se produce un error de ejecución, ya que, al intentar evaluar la expresión: 6.4/a; ‘a’ vale 0, y no se puede dividir entre cero.
  • 23. PÁGINA 22 Por lógica: son más complicados de detectar.es los que el programa se ejecuta correctamente pero no funciona bien esto es debido a un error lógico que se produce cuando los resultados obtenidos no son los esperados. Como podemos ver a continuación. Ejemplo: #include <stdio.h> int main() { float base, altura; base = 6.3; altura = 4.; printf( "El area es: %f", base * altura / 3 ); return 0; } Su salida por pantalla es: El área es: 8.4 No existen errores de sintaxis ni de ejecución, sin embargo, la salida esperada es: El área es: 12.6 Por consiguiente, existe algún error lógico que hay que corregir. El error está en la expresión: Base * altura / 3 Que, aunque no es incorrecta, no sirve para calcular el área de un triángulo. En su lugar se debe escribir: Base * altura / 2
  • 24. PÁGINA 23 Test. 1. ¿Los paradigmas de la Programación Orientada a Objetos (POO) son? b) Herencia c) Extensibilidad d) Polimorfismo e) Encapsulamiento 2. ¿Las características fundamentales de un “objeto” son:? a) Estado b) Identificación c) Comportamiento d) Clasificación 3. ¿Es una agrupación de objetos con características semejantes:? a) atributo b) método c) objeto d) Clase 4. ¿El encapsulamiento? a) Proteger las características de un objeto b) Implementar la reutilización y extensibilidad del Software c) Modificar los métodos heredados de una superclase 5. Los paradigmas de la Programación Orientada a Objetos (POO) son: a) Herencia
  • 25. PÁGINA 24 b) Extensibilidad c) Polimorfismo d) Encapsulamiento. 6. Las características fundamentales de un “objeto” son: a) Estado b) Identificación c) Comportamiento d) Clasificación 7. Es una agrupación de objetos con características semejantes a) Atributo b) método c) objeto d) Clase 8. El encapsulamiento a) Proteger las características de un objeto b) Implementar la reutilización y extensibilidad del Software c) Modificar los métodos heredados de una superclase 9. ¿Cuál es la descripción que crees que define mejor el concepto 'clase' en la programación orientada a objetos? a) Es un concepto similar al de 'array' b) Es un tipo particular de variable c) Es un modelo o plantilla a partir de la cual creamos objetos d) Es una categoría de datos ordenada secuencialmente 10.¿Qué elementos crees que definen a un objeto?
  • 26. PÁGINA 25 a) Sus cardinalidad y su tipo b) Sus atributos y sus métodos c) La forma en que establece comunicación e intercambia mensajes d) Su interfaz y los eventos asociados