Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Curso de java básico (scjp)
Clases en C++.
Definición de Clases y Variables de referencia.
Instrucciones Básicas Entrada de Información
Fundamentos de Programación I Agradecimientos al Ing. Namuel Solórzano Peralta por el contenido de esta presentación.
Herencia en C#.
Lenguaje de programación Java
Orientación a Objetos con Java SE
Fundamentos de la Programación Estructurada
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Introducción al lenguaje C++
Encapsulamiento y Abstracción
Unidad 3 Punteros.
Conceptos Básicos de Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación Orientada a Objetos usando C++
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Lenguaje C.
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
El lenguaje de programación Java
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Clase 10: Estructuras de datos y arreglos.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
FIEE VARIABLES Ing. José Antonio Poma G.. FIEE Variables Una variable es un identificador (nombre de la variable) que hace referencia a.
DEFINICIÓN  Es una forma de entender un problema identificando las entidades principales que se encuentran en el.  Es una forma de desarrollar un sistema.
Manejo de Punteros y objetos en memoria dinámica en C++
Elementos básicos del lenguaje
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Unidad II Introducción a la programación en C++
Programación en C para electrónicos
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
Elementos básicos del lenguaje
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
Elementos básicos del lenguaje
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
PRINCIPIOS DE PROGRAMACIÓN

:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Fundamentos de Programación
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()
Transcripción de la presentación:

class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main() { Triangulo obj(3,5); cout << “El area es: ” << obj.calcularArea()); } Programación I Programación Orientada a Objetos en C++

Fundamentos de C++ Programación I Nombres asignados a variables, métodos y clases para ser identificadas y de forma única y con sentido para el programador. Identificadores:  El primer carácter debe ser letra ó subrayado.  Es un lenguaje sensible a mayúsculas y minúsculas.  Acepta letras, “_” y cifras del 0 al 9.  No se aceptan palabras claves (reservada por C++ para un objetivo determinado)

Fundamentos de C++ Programación I Tipos de Datos: CategoríaTipoTamaño Enteros short? int? long? En coma flotante float? double? Caracteres char? String? Lógicos bool?

Fundamentos de C++ Programación I Declaración de Variables: Asocia un tipo de dato especificado a un grupo de variables. Se pueden declarar en cualquier parte de un bloque de programa ( entre {} ) ó fuera. Sintaxis: Tipo_Dato variable1, variable2,... ; Ejemplo: String nombre; float angulo=90.5; double velocidad; char sexo;

Fundamentos de C++ Programación I Definición de Constantes: Sintaxis: const Tipo_Dato nombreConstante = valor ; Ejemplo: const int MAX=100; const char letra=‘A’; const double v=3.5;

Fundamentos de C++ Programación I El archivo de cabecera iostream.h permite a los programas C++ realizar entrada/salida a consola, esto es, entrada por teclado y salida por pantalla. Salida: El flujo utiliza el operador <<, para visualizar la salida al objeto de salida estándar. El flujo de salida cout permite salidas de múltiples valores. cout<<“Introduzca el numero total de personas:”; cout<<“Numero total de personas: ”<<num<< “\n”; cout <<nombre<<“ tiene ”<<edad<<“ años ”<<endl; Entradas y Salidas Básicas

Fundamentos de C++ Programación I Entrada: C++ ofrece el objeto cin y el operador >>. int edad; double longitud, peso; String nombre; char carácter; cin>>edad; cin>>longitud>>peso; //para saltar usa espacio en blanco ó Enter Para introducir una cadena de caracteres: cin.getline(nombre,100); //Lee una cadena de máximo 100 caracteres y la guarda en nombre. Para leer un carácter cin.get(caracter); Entradas y Salidas Básicas

Fundamentos de C++ Programación I Entrada: Para restaurar el estado del flujo de entrada se usan las funciones: Entradas y Salidas Básicas cin.clear(); Restaura el flujo del estado y lo pone en true, que significa todo bien. cin.ignore(); Reinicia los indicadores de estado

Fundamentos de C++ Programación I Manipuladores de iostream: endl ends flush ws dec oct hex setw(arg) setprecision(arg) setbase(int b) setfill(char car) left right Entradas y Salidas Básicas fixed showbase noshowbase showpos noshowpos showpoint noshowpoint skips noskips

Programación I En C++ las variables pueden ser declaradas en cualquier lugar de un bloque. Esto permite acercar la declaración de las variables al lugar en que se utilizan por primera vez. Las variables auto declaradas de esta forma existen desde el momento en que se declaran, hasta que se llega al fin del bloque correspondiente. En C++ la variable que sirve de contador al bucle puede declararse e inicializarse en la propia sentencia for. Declaraciones en C++ Fundamentos de C++

Programación I Declaraciones en C++ Fundamentos de C++ Por ejemplo: for (double suma=0.0, int i=0; i<n; i++) suma += a[i]; Las variables suma e i son declaradas y creadas como double e int en el momento de iniciarse la ejecución del bucle for.

Introducir Clases en C++ Programación I Estructuras que contienen declaraciones de datos y declaraciones de funciones. Las funciones se denominan funciones miembro, e indican lo que puede hacer la clase. Las variables definidas dentro de la clase se denominan variables miembro o atributos de la clase. Las variables instanciadas a partir de clases son los objetos.

Introducir Clases en C++ Programación I Formato: class nombre_de_la_clase{ private: Lista de atributos y/o metodos public: Lista de atributos y/o metodos; }; Donde nombre_de_la_clase corresponde al nombre que identifica a la clase, y Lista_de_miembros, corresponde a los datos y funciones miembros. La definición de una clase no reserva espacio en memoria. Este almacenamiento se realiza cuando el programa está en ejecución, cuando se instancia una clase o se crea un objeto.

Programación I Los especificadores de acceso public, protected y private, son los que definen el acceso a los datos y a las funciones miembros. Introducir Clases en C++ Ejemplo de declaración de una clase: class Punto{ private: int X; int Y; public: int RetornarX(); void FijarX(int); };

Objeto de una Clase Programación I El objeto es la instancia de una clase. Formato: Nombre_de_la_clase nombre_objeto; Con el objeto de la clase punto: Punto p; El acceso a cada miembro individual de la clase se realiza utilizando el operador punto (.) Por ejemplo: Punto p; p.FijarX(250); cout <<“Coordenada X de p es:”<<p.RetornarX();

Objeto de una Clase Programación I Se puede asignar un objeto de una clase a otro objeto. C++ realiza una copia bit a bit de todos los miembros del dato. Todos los datos contenidos físicamente en el área de datos del objeto fuente se copian en el objeto receptor. Ejemplo: Punto p1; Punto p2; p2 = p1;

Implementación de Clases Programación I Generalmente, la implementación de una clase se realiza en un archivo independiente, de extensión.cpp ó.h lo que ayuda a la reutilización del código. Posteriormente se pueden incluir como archivos de cabecera en un prograna usando la directiva de compilador #include.

Control de Acceso a los Métodos Cuando se crea una nueva clase en C++, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los métodos definidos en la clase por medio de los siguientes modificadores de acceso:public Cualquier clase puede acceder a las propiedades y métodos públicos.protected Sólo las clases derivadas y aquellas situadas o no en el mismo paquete, pueden acceder a las propiedades y métodos protegidos. Programación I

Control de Acceso a los Métodos private Las variables y métodos privados sólo pueden ser accedidos desde dentro de la clase. Si en la definición de la clase se obvia el modificador de acceso, la clase lo asume como privado (private). Programación I

Funciones Miembro o Métodos Programación I Son las que se incluyen dentro de la clase y determinan el comportamiento del objeto. Se definen de manera similar a cualquier otra función pero requiere incluir el operador de resolución de ámbito :: en la definición de la función. Formato: tipo_devuelto nombre_clase::nombre_funcion (lista_parametros){ Lista_de_instrucciones; }

Definición de Funciones Miembro o Métodos Programación I Funciones en Línea y Fuera de Línea: Cuando las funciones miembro se definen dentro de la definición de la clase, se denominan funciones en línea. Cuando se tienen funciones de código muy grandes, es mejor codificar sólo el prototipo de la función dentro del bloque de declaraciones de la clase y codificar la implementación de la función en otro archivo aparte. Esto es cuando se denomina función fuera de línea.

Definición de Funciones Miembro o Métodos Programación I class Punto{ private: int X; int Y; public: void visualizar (void){ cout<<“Coord X es:”<<X; cout<<“Coord Y es:”<<Y; } }; class Punto{ private: int X; int Y; public: void visualizar( ); }; void Punto::visualizar( ){ cout<<“Coord X es:”<<X; cout<<“Coord Y es:”<<Y; } Función definida en Línea Fuera de Línea:

Clases y Objetos Programación I #include “conio.h” #include “iostream” using namespace std; class Estudiante{ //Definición de clase private: char nombre[25]; //Atributos de la clase int cedula; public: void leerDatos(); //Función miembro void mostrarDatos(); //Funcion miembro }; void Estudiante::leerDatos() //Imp. de funcion miembro { cout<<“\nNombre: ”; cin.get(nombre,24); cout >cedula; } void Estudiante::mostrarDatos() //Imp. de funcion miembro { cout<<“\nNombre: ”<<nombre; cout<<“\nCedula: ”<<cedula; }

Clases y Objetos Programación I void main() { Estudiante Objeto; //Instanciación de objetos Objeto.leerDatos (); //Llamada a leerDatos con Objeto Objeto.mostrarDatos(); //Llamada a mostrarDatos con Objeto getch(); }

Para Varios Estudiantes… Vectores de Objetos Programación I void main() { Estudiante Vector[10]; //Instanciación de Vector de obj. estático int tam; cout<<“Cantidad de Estudiantes: ”; cin>>tam; Estudiante *vector = new Estudiante[tam]; //Instanciación de vector de obj. dinámico for(int i=0; i <tam; i++){ vector[i].leerDatos(); vector[i].mostrarDatos(); } getch(); }

Constructores Es una función miembro con un propósito específico que se ejecuta automáticamente cuando se crea un objeto de una clase. Generalmente, un constructor se utiliza para inicializar los datos miembros de una clase. No retorna ningún valor (ni un void), pero si puede tomar los parámetros que requiera. Debe tener el mismo nombre de la clase. Programación I

Constructores #include “iostream.h” #include “conio.h” class cubo{ int alto; int ancho; int lado; public: cubo(); //Constructor por defecto cubo(int x, int y, int z); //Constructor alternativo int getAlto(); //… Definición de otras funciones }; Programación I

Constructores cubo::cubo() { alto=5; } cubo::cubo(int x, int y, int z) { alto = x; ancho = y; lado = z; } int cubo::getAlto() { return alto; } void main (void) { cubo a; //Ejemplo de uso del Constructor por defecto cout<<“\nEl alto de a es: ”<<a.getAlto(); cubo b(3,2,6); //Ejemplo de uso del Constructor alternativo cout<<“\nEl alto de b es: ”<<b.getAlto(); getch(); } Programación I

Constructores Cuando se crea un objeto automáticamente se ejecuta el constructor por defecto. Tal es el caso de cubo a; Cuando se crea un objeto, se pasan los parámetros necesarios para su instanciación, como: cubo b(3,2,6); Esta declaración crea una instancia c de la clase cubo, pasando los parámetros al constructor con los valores especificados. Otra forma de crear un objeto es: cubo *c=new cubo(3,2,6); El operador new invoca de forma automática al constructor del objeto que se crea. Programación I

Destructores Son las funciones que se ejecutan automáticamente cuando se destruye un objeto. Tienen el mismo nombre del constructor, pero se diferencian en que está precedido del carácter ~ No deben tener ningún tipo de retorno. No pueden aceptar parámetros. Sólo puede existir un destructor. Generalmente se utilizan para liberar memoria que fue asignada por el constructor. Programación I

Destructores C++ crea un destructor vacío por defecto en caso de no existir uno declarado explícitamente. Si el ámbito del objeto es local, el destructor es llamado cuando el control es pasado fuera de su bloque de definición. Si el objeto fue creado dinámicamente (con new) el destructor es llamado cuando se invoca el operador delete. Programación I

Destructores class cubo{ private: int alto; int ancho; int lado; public: cubo(int x, int y, int z){alto=x; ancho=y; lado=z; } //Constructor ~cubo(); //Destructor //…definición de otras funciones }; cubo::~cubo(){ cout<<“Cubo destruido \n”; } void main(){ cubo c(2,3,4); c.~cubo(); getch(); } Programación I

Destructores class Ejemplo{ private: int valor; public: Ejemplo(){valor=0; } void Delete() {delete this; } }; void main() { Ejemplo *S4=new Ejemplo(); delete S4; //No se puede hacer S4->Delete(); // OK } Programación I

Herencia La Herencia es una de las característica de C++ que da más poder al concepto de clase. C++ soporta Herencia simple y herencia múltiple. La Herencia Simple es cuando se tiene una sola clase padre y la Herencia Múltiple cuando se tiene mas de una clase padre. Programación I

Herencia Simple #include “iostream” using namespace std; class Caja{ //Clase Padre private: int ancho, alto; public: void DefinirAncho(int an) {ancho=an;} void DefinirAlto(int al) {alto=al;} }; class CajaColor : public Caja { //Clase Hija int color; public: void DefinirColor(int c){color=c;} }; void main() { CajaColor cc; cc.DefinirColor(5); //Función no heredada cc.DefinirAncho(3); //Función heredada cc.DefinirAlto(50); //Función heredada } Programación I

Herencia Simple Si la herencia es public, la clase hija podrá usar los atributos y métodos de la sección pública de la clase padre en forma pública, es decir desde el main. Podrá usar la sección protegida pero desde dentro de sus métodos. class CajaColor : public Caja { }; Si la herencia es protected, la clase hija podrá usar los atributos y métodos de la sección pública y protegida de la clase padre pero desde dentro de sus métodos. Haciéndolos dentro de ella protegidos. No tendrá acceso desde el main. class CajaColor : protected Caja { }; Programación I

Herencia Simple Si la herencia es private, la clase hija podrá usar los atributos y métodos de la sección pública y protegida de la clase padre pero desde dentro de sus métodos. Haciéndolos dentro de ella privados. No tendrá acceso desde el main. class CajaColor : private Caja { }; Si no se coloca el tipo de herencia se asume protegida class CajaColor : Caja { }; La sección privada de una clase padre es no accesible desde una clase hija. Programación I

Herencia Simple Programación I m Programa 1 m Programa 2 m Programa 3 Archivo: Ejemplos de Herencia.doc

Herencia: Resolución de Ambigüedades Dos clases con funciones miembro con el mismo nombre. #include “conio.h” #include “iostream” using namespace std; class A { public: int funcion() {return 1; } }; class B: public A { public: int funcion() {return 2; } }; void main() { B b1; cout << b1.funcion()<<endl; cout << b1.A::funcion(); getch(); } Programación I void main() { B* b2= new B; cout funcion()<<endl; cout A::funcion(); getch(); }

Herencia Múltiple Programación I class Circulo{ float radio; public: Circulo(float r) {radio = r;} float Area() {return radio*radio*3.14;} }; class Mesa { float altura; public: Mesa(float h) {altura=h;} float Altura() {return altura;} }; class Mesa_Redonda: public Mesa, public Circulo{ char color[15]; char modelo[25]; public: Mesa_Redonda(char *, char *); }; MesaCirculo Mesa Redonda color modelo altura radio

Herencia Múltiple Programación I class A{ public: int valor; }; class B: public A{}; class C: public A{}; class D: public B{}, public C{ public: int Valor() {return valor; } // valor es ambiguo ERROR int Valor(){return C::valor; }; // valor no ambiguo void main(){ D d; int v=d.B::valor; //Referencia sin ambiguedades D* objeto = new D; int w=objeto->B::valor } //Referencia sin ambiguedades AA BC D

Invocar Constructores de la Clase Padre Programación I #include “iostream.h” #include “conio.h” class Empleado{ string nombre; float sueldo; public: Empleado(string xnom, float xsue) { nombre=xnom; sueldo=xsue; } string getNom(){ return nombre; } float getSue(){ return sueldo; } }; class Manager : public Empleado { string departamento; public: Manager(string n, float s, string d); string getDep(){ return departamento; } }; Manager::Manager(string n, float s, string d) : Empleado(n, s) { departamento=d; }

Invocar Constructores de la Clase Padre Programación I void main(){ Manager supervisor(“Luis Perez”, , ”Ventas”); cout<<"\nNombre: "<<supervisor.getNom(); cout<<"\nSueldo: "<<supervisor.getSue(); cout<<"\nDepartamento: "<<supervisor.getDep(); getch(); } Se invoca al constructor alternativo de la clase Manager y éste constructor antes de ejecutarse invoca al constructor alternativo de la clase Padre (Empleado)

Herencia Múltiple Programación I m Programa 4 Archivo: Ejemplos de Herencia.doc

Funciones Amigas Programación I Existen funciones que no pertenecen a una clase pero se pueden declarar como amigas de ella y así tener el derecho de acceder a la parte privada de la misma. #include ”iostream.h” #include “conio.h” class numero { friend void asignar_valor(numero *, int ); int x; public: numero(){x=0;} void imprimir(); }; void numero::imprimir(void) { cout << x << endl; } void asignar_valor (numero *c, int nx) { c->x = nx; }

Funciones Amigas Programación I void main() { int n; numero m; cout<<"El valor de la variable x antes de activar la funcion amiga: "; m.imprimir(); cout<<"Dar un valor para x:"; cin>>n; asignar_valor(&m, n); asignar_valor(&m, n); //como no pertenece a la clase se llama sin objeto cout<<"El valor de la variable x después de activar la funcion amiga: "; m.imprimir(); cout<<"\nPresione una Tecla para Continuar"; getch(); }

:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Finalización