Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional

Documentos relacionados
PROGRAMACION ORIENTADA A OBJETOS EN C++

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

Fundamentos Programación Orientada a Objetos ( POO ) - Parte I Desarrollo de Software

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida

Tema: Sobrecarga de Operadores.

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Capítulo 6. Introducción a la POO

Tema: Clases y Objetos en C++.

Tema: Arreglos de Objetos en C++.

Lenguaje de Programación

Polimorfismo. Métodos virtuales

Derechos de Acceso: COMPOSICION

2.1 Definiciones básicas en Orientación a Objetos

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

Informática I para Bachillerato

Instituto Tecnológico de Celaya

Tema: Punteros a Objetos. Puntero this.

Apuntadores en C y C++

Clases en C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Algoritmos y Programación II. Enero de 2005

Programación C++ Tipos Parametrizados. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional

Tema: Clases y Objetos en C#. Parte II.

Programación Avanzada

INFORMÁTICA II. Clase 1: Presentación- Introducción. Semestre 2012/1

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

Programación Orientada a Objetos (POO)

Funciones y Clases Amigas en C++ Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Elementos de un programa en C

CURSO 2º GRUPO Junio 2011

Guía práctica de estudio 04: Clases y objetos

Programación I Unidad III. Tema: Tipos, estructuras y uniones

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

Estructuras de Datos Declaraciones Tipos de Datos

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

Modulo 11. Clases y Objetos en Java

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO

Prof. Dr. Paul Bustamante

Taller #1 (versión del 18 de septiembre de 2009) Programación básica y aproximación al paradigma orientado a objetos

Tema: Herencia Simple y Múltiple en C++.

Introducción a C++ y Code::Blocks

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Programación I. Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Aplicaciones de Escritorio

TALLER FINAL DE ALGORITMO Y PROGRAMACIÓN ORIENTADA A OBJETOS I (POOI) PRESENTADO POR ENDRIS JUDITH CABALLERO CARO KEYLA JAKELINE JIMENEZ CUADROS

FUNDAMENTOS DE INFORMÁTICA

LENGUAJE. Tema 1 - Introducción

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Universidad de Managua

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

2.2 Nombres, Ligado y Ámbito

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

Agenda..NET C# Laboratorio #1

Prof. Dr. Paul Bustamante

Tema 6. Gestión dinámica de memoria

Programación con Visual C#

Impresión por pantalla

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Introducción a la programación orientada a objetos

Programación orientada a objetos en PHP. Lic. Nancy Michelle Torres Villanueva

Objective C (Desarrollo con Apple)

Prof. Dr. Paul Bustamante

Principios de Computadoras II

Entrada y salida de datos en C y C++

Prof. Dr. Paul Bustamante

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

INTRODUCCIÓN AL LENGUAJE C++

Cuales son los 6 lenguajes de programacion mas usados actualmente. Cuales son los 6 lenguajes de programación mas usados actualmente.

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Introducción. Herencia y Polimorfismo. Ejemplos (I) Ejemplos (II) Control de Acceso. Herencia

Introducción al laboratorio de Programación I

La Herencia: Teoría (1)

Prof. Dr. Paul Bustamante

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Necesidad de la herencia pertenencia variedad is a has a herencia variedad definir una clase modificando una o más clases añadir nuevos miembros

Tema 5: Herramientas de programación y diseño modular

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

Introducción al Lenguaje de Programación C

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

C# para no Programadores

Java Inicial (20 horas)

3. Indicar la salida por pantalla (2 puntos-15 minutos)

Tema 10: Tipos de datos definidos por el usuario

Introducción a Java LSUB. 30 de enero de 2013 GSYC

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Clases y Objetos. Informática II Ingeniería Electrónica

Conceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases

Programación estructurada (Introducción a lenguaje C)

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Transcripción:

Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional

Programming Language Popularity: The TCP Index for December, 2012

La noción de clase en C++ C++ fue diseñado con los siguientes propósitos: Mejorar al lenguaje C. Soportar los Tipos de Datos Abstractos (TDA). Soportar la Programación Orientada a Objetos (POO).

Porqué extender C? Gran cantidad de programadores en todo el mundo usan el lenguaje C como su principal, pues: C es flexible: Es decir es aplicable a gran cantidad de aplicaciones. C es eficiente: Como la semántica de C es relativamente de bajo nivel, le permite al programador utilizar eficientemente los recursos de hardware en sus programas. C está disponible tanto para micros como para computadoras grandes, las bibliotecas de C también están disponibles en la mayoría de los ambientes

En los últimos años la Programación Orientada a Objetos ha tomado gran auge, pero cuál es el lenguaje más adecuado? Tomando en cuenta que C++, salvo pequeños cambios, contiene al lenguaje C y que existen gran cantidad de aplicaciones desarrolladas en C. C++ es un lenguaje que soporta todas las ideas de la Orientación a Objetos y se pueden encontrar compiladores de C++ en gran cantidad de plataformas. C++ de AT&T Bell Laboratories versión 2.0 fue diseñado por Bjarne Stroustrup como un sucesor de C. C++ le agrega características a C dirigidas a la programación orientada a objetos (POO), es por esto que C++ fue originalmente llamado "C con clases''.

Bjarne Stroustrup

Algunas de las características más importantes de la programación orientada a objetos son las siguientes: Combina la estructura de datos con las funciones (métodos) dedicados a manipular estos datos. La encapsulación es lograda mediante nuevas estructuras y mecanismos para tipos de datos, las clases. Permite construir nuevas clases que heredan los datos y funciones de otras clases previamente definidas (clase base), a las cuales se les pueden definir nuevos datos y acciones, o bien se pueden redefiner los datos y métodos de la clase base. Esto crea una jerarquía de clases. El polimorfismo permite dar a una acción, un nombre o símbolo, el cual es implementado en forma diferente y apropiada en cada nivel o clase de la jerarquía.

En POO Programación Orientada a Objetos, los datos y los procedimientos se combinan en Clases, es decir, se pueden expresar mediante la siguiente relación: Datos + Código = Clase

Ejemplo: En programación C tradicional los datos se programan: struct aeroplano { int velocidad; int altitud; int flaps; } y el comportamiento del aeroplano se define por separado: void acelera() {... } void desacelera() {... } void sube_flaps() {... }...

En POO las características datos (atributos) y el comportamiento (métodos) se combinan en una única entidad llamada Clase. La definición de un aeroplano en forma de clase es la siguiente: class aeroplano { int velocidad ; // Atributos int altitud; int Flaps; public: aeroplano(); // Constructor ~aeroplano(); // Destructor void acelera (); // Métodos void asciende(); void desciende(); void sube_flaps(); void baja_flaps(); };

En POO los procedimientos y funciones se declaran dentro de la clase y se conocen como métodos. Su código se escribe como sigue: aeroplano::aeroplano() { flaps = 0; velocidad= 0; altitud = 0; } aeroplano::~aeroplano() {... }... void aeroplano::baja_flaps() { flaps = 0; }

Una vez definida la clase, se pueden declarar objetos, es decir variables de este "tipo'' usando el nombre de la clase, tal como sigue: aeroplano A; En el programa se pueden escribir sentencias como éstas: void main() { aeroplano A; // Declara un objeto de tipo aeroplano A.sube_flaps(); // Se le envía un mensaje al objeto A A.acelera();... }

En C++ se pueden definir clases mediante las palabras reservadas struct, union o class. Sin embargo la palabra más utilizada es class. La sintaxis general es la siguiente: class nombre_de_la_clase { datos y funciones privados public: datos y funciones públicas } lista_de_clases; Por ejemplo, considere la siguiente definición de una clase para una lista enlazada: class Lista { nodo *p_nodo; public: Lista(); // Constructor ~Lista(); // Destructor void inserta(int,char*); void imprime(); };

Struct vrs Class Como se mencionó anteriormente se pueden declarar clases mediante la palabra reservada struct, pues C++ amplía las capacidades que esta palabra ya poseía en C. La diferencia central está en el acceso a los miembros de la clase (ya sean estos atributos o métodos). Así que si una clase se define con la palabra class entonces todos sus miembros por defecto son privados, es decir, solo accesibles por sus propios métodos. Mientras que si una clase se define con la palabra struct entonces todos sus miembros serán por defecto públicos, es decir sus miembros serán accesibles libremente por cualquier expresión o función fuera de su ámbito de alcance. <EjemploP2-1> y <EjemploP2-2>

Sin embargo en C++ se puede controlar el acceso a los miembros de sus clases con las palabras reservadas public:, private: o protected: de acuerdo con las siguientes reglas: private: Los miembros seguidos de esta palabra solo pueden ser accesados por las funciones miembro de la clase, es decir, declaradas en la misma clase. protected: Los miembros seguidos de esta palabra solo pueden ser accesados por las funciones miembro de la clase o por funciones miembro de clases derivadas, este término se explica con más detalle adelante. public: Los miembros seguidos de esta palabra pueden ser accesados en cualquier parte del programa, dentro del ámbito de validez donde fue declarada una instancia (objeto) de la clase.

Más Ejemplos: EjemploP2-2B EjemploP2-2C (agregando un constructor) EjemploP2-2D (agregando un constructor default ) EjemploP2-2E (Atributos privados y constructor explícito) EjemploP2-2F (Métodos gets y sets )

Ejemplo 2.3. Clase de objetos Persona. // Persona.h #pragma once class Persona { char* Nombre; int Edad; public: Persona(char* Nom, int Ed); void Muestra(); void SetNombre(char* NuevoNom); void SetEdad(int NuevaEdad); void GetNombre(char* Nom); int GetEdad(); };

// Persona.cpp #include "persona.h" #include <iostream> #include <cstring> using std::cout; using std::endl; // For stream I/O // For strlen() and strcpy() Persona::Persona(char* Nom, int Ed) { } Nombre = new char[strlen(nom)+1]; strcpy_s(nombre,strlen(nom)+1,nom); Edad = Ed; void Persona::Muestra() { } cout << endl << "Persona: " << Nombre << endl << "Edad: " << Edad << endl; void Persona::SetNombre(char* NuevoNom) { Nombre = new char[strlen(nuevonom)+1]; strcpy_s(nombre,strlen(nuevonom)+1,nuevonom); }

#include "persona.h" #include <iostream> #include <cstring> using std::cout; using std::endl; using std::cin; // For stream I/O // For strlen() and strcpy() void main() { char ch; Persona P1("Carlos",20); Persona P2("Maria",30); cout << endl; P1.Muestra(); // Se envía el "mensaje" Muestra al objeto P1 P2.Muestra(); cin >> ch; P1.SetNombre("Luis"); P1.SetEdad(40); P1.Muestra(); cin >> ch; } <EjemploP2-3>

Tarea #1 Implemente una clase Esfera que tiene como atributo el radio y métodos para calcular su área y su volumen (ver http://es.wikipedia.org/wiki/esfera). Desarrolle un proyecto en Visual C++ para una clase Estadística que tiene dos vectores x y y del mismo tamaño N, y métodos para calcular la media, la moda, la mediana para el vector x, así como la covarianza y la correlación entre los dos vectores x y y.