TECNOLÓGICO NACIONAL DE
MÉXICO
Instituto Tecnológico Superior de
Guasave
PROGRAMACIÓN ORIENTADA A
PROGRAMACIÓN ORIENTADA A
OBJETOS
Competencia de la unidad:
Aplica los conceptos de clases y objetos en el desarrollo de
programas para solución de problemas de acuerdo al
paradigma orientado a objetos.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Lenguaje de programación a utilizar
• C ++
• Utilizar el paquete Dev C++ para trabajar en modo consola
PROGRAMACIÓN ORIENTADA A
OBJETOS
DECLARACIÓN DE CLASES EN C++
class NombreClase {
private:
//
implementaci
on de la clase
// solamente los atributos
public:
// interfaz de la clase
};
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejemplo:
class Cuenta {
private:
// variables privadas
public:
long
numero; char
nombre[20];
float saldo;
};
PROGRAMACIÓN ORIENTADA A
OBJETOS
• Los atributos (tipo de variables) pueden ser de los tipos básicos de C#:
boolean, char, byte, short, int, float, double y string.
• Los elementos de una clase se pueden etiquetar como public en su
declaración y los que no deban ser vistos desde otra clase se
pueden etiquetar como private.
private long
numero; public float
saldo;
PROGRAMACIÓN ORIENTADA A
OBJETOS
C# Tipo Signed? Rango
sbyte Yes -128 a 127
short Yes -32768 a 32767
int Yes -2147483648 a 2147483647
long Yes -9223372036854775808 a 9223372036854775807
byte No 0 a 255
ushort No 0 a 65535
uint No 0 a 4294967295
ulong No 0 a 18446744073709551615
float Yes Aprox. ±1.5 x 10-45 a ±3.4 x 1038 con 7 decimales
double Yes Aprox. ±5.0 x 10-324 a ±1.7 x 10308 con 15 o 16 decimales
decimal Yes Aprox. ±1.0 x 10-28 a ±7.9 x 1028 con 28 o 29 decimales
char N/A Cualquier carácter Unicode
bool N/A true o false
PROGRAMACIÓN ORIENTADA A
OBJETOS
Operadores Básicos
Operador Observaciones
+ Representa la suma de dos o más valores o variables.
- Representa la resta de dos o más valores o variables.
* Representa la multiplicación de dos o más valores o variables.
/ Representa la división de dos o más valores o variables.
Representa el modulo (obtención del residuo de una división) de
% dos o más valores o variables.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Operadores Básicos
Operador Observaciones
Operador AND (Y) quiere decir que todas las condiciones deben ser
&&
verdaderas para que se ejecute una acción.
Operador OR (O) quiere decir que de todas las condiciones solo una debe ser
|| verdadera y se asume que con eso es suficiente para hacer determinada
acción.
Operador NOT (NO) quiere decir que se niega la afirmación para cambiar su
!
valor, es decir cambia de verdadero a falso y de falso a verdadero.
== Igual que
!= Diferente a
> Mayor que
< Menor que
>= Mayor igual que
<= Menor igual que
PROGRAMACIÓN ORIENTADA A
OBJETOS
• Nombres de Variables: En C++ los nombres de las variables y las
funciones siguen ciertas reglas, por ejemplo las variables se acostumbra a
nombrarlas con todas sus letras en minúsculas, las funciones con la
primer palabra que la identifica en minúsculas y las palabras siguientes
con la primer letra en mayúsculas y los nombres de las Clases de objetos
con la primer letra de cada palabra que la define en mayúsculas.
• Los nombres de variables no pueden iniciar con número, pero si pueden
contener el carácter de subrayado “_”.
PROGRAMACIÓN ORIENTADA A
OBJETOS
•
Inicialización y Finalización: esto se hace por medio de
constructores cuyo nombre coincide con la clase.
Cuenta::Cuenta() {
numero=0;
strcpy(nombre, ""); // forma de iniciar una variable char
saldo=0;
}
PROGRAMACIÓN ORIENTADA A
OBJETOS
• Cuando se finaliza un objeto, se realizan ciertas tareas antes de su
destrucción en memoria, para liberarla.
• En C la liberación de memoria se realiza de manera automática, un
objeto se destruye cuando se termina el programa, cuando se sale de
una función (o bloque) que había creado al objeto.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Creación de Objetos: En C++ los objetos se crean a partir de las clases que
hemos definido en nuestro código.
Una vez que se ha definido una clase, se puede crear un objeto de ese tipo
usando el nombre de la clase. El nombre de la clase se convierte en un
especificador del nuevo tipo.
Los pasos a seguir en la creación de un objeto son:
• Declarar una referencia a la clase.
• Crear un objeto el nombre de la clase y el nombre del nuevo objeto.
• Cuando un objeto de la clase es creado, éste tendrá su propia copia de las
variables miembros que contiene la clase.
PROGRAMACIÓN ORIENTADA A
OBJETOS
• La creación de un objeto de la clase Cuenta se realizaría de la siguiente
forma:
Cuenta cta; // Una referencia a un objeto de la clase Cuenta
• Los tipos básicos (int, long, float, etc.) sí pueden ser
creados directamente en la pila.
float in;
long num;
in = 0.1;
num =
18400200
;
Cuenta
Primer programa en C++
#include <iostream> Cuenta::Cuenta() {
PROGRAMACIÓN ORIENTADA A
#include <stdio.h> numero=1919;
#include <string.h> strcpy(nombre, "Carmen Salinas");
using namespace std; saldo=27000;
class Cuenta { }
private: int main(int argc, char *argv[]) {
// variables privadas Cuenta cta;
public: cout << "Nombre: " << cta.nombre
long << "; Cuenta: " << cta.numero
numero; << "; Saldo: " << cta.saldo;
OBJETOS
float saldo; return 0;
char nombre[20]; }
}; Cuenta(); // constructor
PROGRAMACIÓN ORIENTADA A
OBJETOS
Declaración de métodos (subrutinas)
• En C++ se pueden declarar diferentes tipos de métodos, es decir las
acciones que realiza la clase se definen dentro de un método.
El termino void
• El hecho de que un método devuelva o no un valor es opcional. En caso de
que devuelva un valor se declara el tipo que devuelve. Pero si no necesita
ningún valor, se declara como tipo del valor devuelto, la palabra
reservada void.
PROGRAMACIÓN ORIENTADA A
OBJETOS
• Sintaxis para declarar métodos
tipoValorDevuelto Clase::Nombre_metodo (lista_argumentos ) {
bloque_de_código;
…
return;
}
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejemplo:
void Cuenta::sumaSaldo (long numCta, float cantidad) {
saldo = saldo + cantidad;
}
• En este ejemplo el método recibe dos parámetros que fueron enviados
desde la línea del programa donde se llamó, y modifica el contenido de la
variable saldo;
PROGRAMACIÓN ORIENTADA A
OBJETOS
Uso de métodos en un programa
• Los métodos se invocan con su nombre, y pasando la lista de argumentos
entre paréntesis. El conjunto se usa como si fuera una variable del Tipo
devuelto por el método.
Ejemplo: // método para obtener saldo
float sld; float Cuenta::getSaldo(){
sld = return saldo;
cta.getS }
aldo();
cout <<
“El saldo
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejercicio
• Utilizando POO hacer programa que convierta los datos de una persona, su
peso en libras y su estatura en pies (medidas americanas) a su peso a kilos y
su estatura a metros (medidas métrico-decimales):
1 libra equivale a 0.4536 kilos
1 pie equivale a 0.3047 metros
• Los valores en pies y libras debe capturarlos en la rutina main antes de
llamar el constructor.
• Debe hacer un método por cada conversión y devuelvan los valores a la
rutina main donde deben ser desplegados.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Práctica:
• Utilizando POO diseñe una clase para un rectángulo, añada los
métodos necesarios para obtener (una método por fórmula):
El área:
A=a*b
El perímetro:
P = 2(a + b)
La diagonal:
d = √(a2 - b2)
El radio de la circunferencia circunscrita:
R = √(a2 - b2)/2
PROGRAMACIÓN ORIENTADA A Ciclos en C++
Ciclo Ciclo
while for
inicia; for (inicia;condición;salto)
while {
(condicion …
){ }
…
Ejemplo
salto; :
}
for(int i=0;i<=10;i++)
OBJETOS
Ejemplo: {
int i = 0; cout << i;
while (i <= 10) }
PROGRAMACIÓN ORIENTADA A
OBJETOS
• Condiciones en C++
if (condicion) {
… (parte verdadera de la condición)
} else {
… (parte falsa de la condición)
}
PROGRAMACIÓN ORIENTADA A
OBJETOS
Sobrecarga de métodos
• Un método sobrecargado se utiliza para reutilizar el nombre de un método
pero con diferentes argumentos (opcionalmente un tipo diferente de
retorno).
Las reglas para sobrecargar un método son las siguientes:
• Los métodos sobrecargados deben de cambiar la lista de argumentos.
• Pueden cambiar el tipo de retorno.
• Pueden cambiar el modificador de acceso.
• Pueden declarar nuevas o más amplias excepciones.
• Un método puede ser sobrecargado en la misma clase o en una subclase.
PROGRAMACIÓN ORIENTADA A
OBJETOS Ejemplo Sobrecarga:
#include <iostream>
int sobrecarga::sumaNum(int a, int b, int c)
{ sum3 = a + b + c;
using namespace std; return sum3;
class sobrecarga }
{ public: int main(int argc, char** argv)
int sum2, { int n1, n2, n3, res1, res2;
sum3;
sobrecarga sbc;
int
sumaNum( cout << "\nNumero 1: "; cin >>
int a, int n1;
b); cout << "\nNumero 2: "; cin >> n2;
int sumaNum(int a, int b, int c); cout << "\nNumero 3: "; cin >> n3;
sobrecarga1(); res1=sbc.sumaNum(n1, n2);
}; cout <<"\nResultado de sumar los dos pirmeros numeros: " << res1;
sobrecarga::sobrecarga() { res2=sbc.sumaNum(n1, n2, n3);
sum2=0; sum3=0; cout <<"\nResultado de sumar los tres numeros: " << res2;
}
int sobrecarga::sumaNum(int a, int b) return 0;
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejercicio de sobrecarga
• Utilizando POO haz un programa que capture un número en a rutina principal
y calcule el valor absoluto del mismo dentro de una clase, este puede ser int,
float, o long y regrese ese dato a la rutina principal.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejercicio de sobrecarga
• Escribe un programa que la suma de dos números utilizando
realice sobrecarga de la siguiente
forma:
• Sumar entero y entero;
• Sumar flotante y flotante;
• Sumar flotante y entero;
• Sumar entero y flotante.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejercicios con ciclos y condiciones
• Utilizando POO escribe un programa que capture un número en la rutina
principal y por medio de un método en clase calcule la tabla de multiplicar
de ese numero desde el 1 hasta el diez.
PROGRAMACIÓN ORIENTADA A
OBJETOS
Ejercicio:
• Utilizando POO escribe un programa que capture un número en la rutina
principal y por medio de un método en clase calcule el factorial de un
número entero
PROGRAMACIÓN ORIENTADA A
OBJETOS
Proyecto de la unidad: Una empresa necesita calcular su salario semanal por
obrero, el cual se obtiene de la sig. manera:
Si trabaja 40 horas o menos se le paga $16 por hora.
Si trabaja más de 40 horas se le paga $16 por cada una de las primeras
40 horas y $20 por cada hora extra.
• Debe capturar en la rutina principal el nombre, y la cantidad de horas
trabajadas. Y en una clase realizar el método correspondiente para calcular
el sueldo semanal, dicho método debe devolver el sueldo total y se
desplegará en la rutina main.