Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porVirginia Campos Ruiz Modificado hace 8 años
1
Programación Orientada a Objetos EIF200 FUNDAMENTOS DE INFORMÁTICA Compilado por: Mag. Sonia Mora. Dra. Mayela Coto. Proyecto 0151-14 UNA – Mora & Coto, 2015
2
Ejemplo Un programa de matemática básico desea realizar operaciones con números y poder determinar que tipo de número es: primo, par, impar, etc. ¿Qué atributos debería tener una clase Número que permita esto? Defina la clase Número Constructor con y sin parámetros Métodos set y get Método destructor Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
3
Ejemplo: clase número #include using namespace std; class Numero { private: int valor; public: Numero () { valor = 0; } Numero (int valor) { this->valor = valor; } // métodos set void setValor (int valor) { this->valor = valor; } // métodos get int getValor ( ) { return(valor); } ~ Numero (){ // se elimina el numero } // métodos cálculo }; EIF200 FUNDAMENTOS DE INFORMÁTICA
4
Número impar Escriba un método que permita determinar si un número es impar Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
5
Número impar Opción #2 string esImpar () { if (valor %2 != 0) return “impar"; } Opción #1 bool esImpar () { if (valor %2 != 0) return true; } ¿qué pasa si es par? class Numero { private: int valor; ….. EIF200 FUNDAMENTOS DE INFORMÁTICA
6
Número impar Opción #2 string esImpar () { if (valor %2 != 0) return “impar"; else return "par"; } Opción #1 bool esImpar () { if (valor %2 != 0) return true; else return false ; } class Numero { private: int valor; ….. bool esImpar () {return (valor%2!=0);} bool esImpar () {return (valor%2!=0);} Otra forma……… EIF200 FUNDAMENTOS DE INFORMÁTICA
7
Ejemplo: clase número Escriba dos segmentos del main() que cree un objeto numero con un valor dado por el usuario y que determine e imprima si dicho número es par o impar (usando cada una de las versiones de los métodos anteriores). Es decir: Cuando los métodos devuelven valores booleanos Cuando los métodos devuelven un valor tipo string EIF200 FUNDAMENTOS DE INFORMÁTICA
8
int main() { int a; cout<<"Valor del numero: "<<endl<<endl; cin>>a; Numero num1(a) ; cout<<"El numero es "<<num1.esImpar()<<endl; …..} int main() { int a; cout >a; Numero num1(a) ; if (num1.esImpar()) cout<<"El numero es impar"<<endl<<endl; else cout<<"El numero es par"<<endl<<endl; ……. } CASO#1 El método devuelve True si el número es impar y False si es par CASO#2 El método devuelve una hilera de caracteres EIF200 FUNDAMENTOS DE INFORMÁTICA
9
Ejercicio: clase Numero En la clase Numero escriba un método que retorne el valor absoluto del número class Numero { private: int valor; ….. Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
10
Ejercicio: clase Numero En la clase Numero escriba un método que retorne el valor absoluto del número int absoluto() { if(valor>=0) return valor; else return (-valor); } class Numero { private: int valor; ….. Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
11
x + 5 = 0 Ejercicio: Ecuación Lineal Dadas las siguientes ecuaciones de primer grado identifique que elementos las caracterizan y defina: Una clase que represente una ecuación de primer grado y Los atributos que las caracterizan, use el diagrama UML correspondiente. 3x-2=0 -x + 3 = 0 ax+b= 0 EIF200 FUNDAMENTOS DE INFORMÁTICA
12
Clase EcuLineal EIF200 FUNDAMENTOS DE INFORMÁTICA
13
Ejercicio: Ecuación Lineal Defina para esa clase los métodos básicos: Un método constructor sin/con parámetros. Los métodos públicos set/ get para cada uno de los atributos que los requieran. EIF200 FUNDAMENTOS DE INFORMÁTICA
14
Ejercicio: Ecuación Lineal #include using namespace std; class EcuLineal{ private: float a; float b; public: EcuLineal(){//constructor sin parámetros a=1; b=1; } EcuLineal(float pA,float pB){//constructor con parámetros a=pA; b=pB; } EIF200 FUNDAMENTOS DE INFORMÁTICA
15
Ejercicio: Ecuación Lineal float getA(){ return(a); } float getB(){ return(b); } void setA(int pA){ a= pA; } void setB(int pB){ b= pB; } EIF200 FUNDAMENTOS DE INFORMÁTICA
16
Ejercicio: Ecuación Lineal Una ecuación lineal de la forma ax+b=0 para tener solución debe cumplir que a sea distinta de cero Por lo tanto se debe considerar el análisis del valor de a. EIF200 FUNDAMENTOS DE INFORMÁTICA
17
Ejercicio: Ecuación Lineal private: // método privado bool esEcuacion() { return (a!=0); } private: bool esEcuacion() { // evalúa la condición de a if (a != 0) return true; else return false; } Versión mejorada Note que el método esEcuacion() realiza una operación interna al método que encuentra la solución de la ecuación. Por lo tanto puede crearse como un método privado EIF200 FUNDAMENTOS DE INFORMÁTICA
18
Ejercicio: Ecuación Lineal public: void solucion() { if(esEcuacion()) //la evaluación da true o false cout<<"La ecuacion " << a << "x +" <<b<<" = 0 es:"<<-b/a; else cout<<"No es ecuacion"<<endl; } }; // fin de la clase EIF200 FUNDAMENTOS DE INFORMÁTICA
19
Ejercicio: Ecuación Lineal int main() { float a1,b1; cout<<"Digite los valores de a y b "<<endl; cin>>a1>>b1; EcuLineal ecuacionA(a1,b1); ecuacionA.solucion(); return 0; } EIF200 FUNDAMENTOS DE INFORMÁTICA
20
x 2 + 5 = 9 Ejercicio: Ecuación Cuadratica Dadas las anteriores ecuaciones de segundo grado identifique que elementos las caracterizan y defina: Una clase que las represente y Los atributos que las caracterizan, use el diagrama UML correspondiente. Impleméntela 3 x 2 - x-2= 25 - x 2 + 3x = 0 ax 2 +bx+c= 0 EIF200 FUNDAMENTOS DE INFORMÁTICA
21
Clase: Ecuación Cuadrática EIF200 FUNDAMENTOS DE INFORMÁTICA
22
Ecuación Cuadrática #include using namespace std; class EcuCuadratica{ private: int a; int b; int c; public: EcuCuadratica(){//constructor sin parámetros a=1; b=1; c=1; } EcuCuadratica(int a,int b,int c){//constructor con parámetros this->a=a; this->b=b; this->c=c; } EIF200 FUNDAMENTOS DE INFORMÁTICA
23
Ecuación Cuadrática int getA(){ return(a); } int getB(){ return(b); } int getC(){ return(c); } void setA(int pA){ a= pA; } void setB(int pB){ b= pB; } void setC(int pC){ c= pC; } EIF200 FUNDAMENTOS DE INFORMÁTICA
24
Ecuación Cuadrática private: // métodos privados bool esEcuacion() { return (a!=0); } float discriminante(){ return ( b*b-4*a*c); } EIF200 FUNDAMENTOS DE INFORMÁTICA
25
Ecuación Cuadrática: Método Solucion() EIF200 FUNDAMENTOS DE INFORMÁTICA
26
Ecuación Cuadrática: Método Solucion() public: void Solucion(){ float dis; if(esEcuacion()){ dis = discriminante(); if (dis > 0) { cout<<"x1 : "<<(-b+sqrt(dis))/(2*a)<<endl; cout<<"x2 : "<<(-b-sqrt(dis))/(2*a)<<endl; } else if (dis == 0) cout<<"x1 : "<<(-b)/(2*a)<<endl; else cout<<"No tiene solucion en R"<<endl; } else cout<<"No es ecuacion cuadratica"<<endl; } }; EIF200 FUNDAMENTOS DE INFORMÁTICA
27
Ecuación Cuadrática int main() { EcuCuadratica ecuacionA(2,2,-12); cout<< "La solucion a la ecuacion es"<<endl; ecuacionA.Solucion(); EcuCuadratica ecuacionB(1,-10,25); cout<< "La solucion a la ecuacion es"<<endl; ecuacionB.Solucion(); EcuCuadratica ecuacionC(0,-10,25); cout<< "La solucion a la ecuacion es"<<endl; ecuacionC.Solucion(); return 0; } EIF200 FUNDAMENTOS DE INFORMÁTICA
28
Ejemplo: clase Fecha Suponga que tiene una clase Fecha definida de la siguiente manera : class Fecha { private: int dia; int mes; int anyo; … } Se quiere un método que imprima la fecha de la forma “22 de junio de 1983”. Es necesario un método que sea capaz de devolver el nombre del mes Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
29
Ejemplo: clase Fecha string mesAnyo() {switch (mes) { case 1: return "enero"; case 2: return "febrero"; case 3: return "marzo"; ……… case 12: return "diciembre"; default: return "mes invalido"; } void imprimeFecha (){ cout << dia<< "de "<<mesAnyo() << "de " << anyo << endl;} class Fecha { private: int dia; int mes; int anyo; ….. Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
30
Clase Fecha: método diasMes() Escriba un método que determine el número de días de cada mes Debe considerar los días de cada mes según: Enero, marzo, mayo, julio, agosto, octubre y diciembre (meses: 1,3,5,7,8,10,12) 31 días Febrero (mes 2) depende de si es o no bisiesto Abril, junio, setiembre, noviembre (meses: 4,6,9,11) 30 días Suponga que existe el método bool bisiesto() que devuelve verdadero si el año es bisiesto EIF200 FUNDAMENTOS DE INFORMÁTICA
31
Clase Fecha: método diasMes() bool bisiesto () {// metodo que determina si el año es bisiesto } int diasMes() {/* metodo que determina el número de días de un mes */ if (mes == 4 || mes == 6 || mes == 9 || mes == 11) return 30; else if (mes == 2) if ( bisiesto( ) ) return 29; else return 28; else return 31; } }; Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
32
Clase Fecha: uso del switch int diasMes() { switch (mes) { case 4: return 30; case 6: return 30; case 9: return 30; case 11: return 30; case 2 : if( bisiesto( )) return 29; else return 28; default: return 31; } Al ser return no requiere break; int diasMes() { switch (mes) { case 4: case 6: case 9:case 11: return 30; case 2 : if( bisiesto( )) return 29; else return 28; default: return 31; } EIF200 FUNDAMENTOS DE INFORMÁTICA
33
Clase Fecha: método incrementaDias() Escriba un método que incremente la fecha en 1 día. Ejemplo dia=31 mes=8 anyo=2016 dia=1 mes=9 anyo=2016 dia=31 mes=12 anyo=2020 dia=1 mes=1 anyo=2021 Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
34
Clase Fecha: método incrementaDias() void incrementaDia() { if (dia < diasMes()) dia++; else { // dia = 1; if (mes < 12) mes++; else { mes = 1; anyo++; } Imágenes en esta diapositiva son de dominio público EIF200 FUNDAMENTOS DE INFORMÁTICA
35
Uso didáctico curso EIF 200 Escuela de Informática Universidad Nacional Costa Rica EIF200 FUNDAMENTOS DE INFORMÁTICA Proyecto 0151-14 UNA – Mora & Coto, 2015
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.