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í.
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
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.
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.
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
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