









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
resumen de lenguaje de programación
Tipo: Resúmenes
1 / 17
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










C++ es un lenguaje de programación orientado a objetos que toma la base del lenguaje C y le agrega la capacidad de abstraer tipos como en Smalltalk. C++ es un lenguaje de programación diseñado a mediados de los años 80 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitieran la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
/* Esta cabecera permite usar los objetos que encapsulan los descriptores stdout y stdin: cout(<<) y cin(>>)*/ #include
Para declarar una clase, todo lo que se necesita es escribir una definición de estructura y sustituir la palabra reservada struct por class. Por ejemplo, una clase empleado con campos como el nombre, el departamento, la posición, el una función que nos imprima la información de este quedaría así: class Empleado { char* m_nombre; char* m_departamento; char* m_posicion; long m_salario; void Imprimir( Empleado infoEmpleado); } Cuando usted declara una clase en C++, no se reserva memoria para la clase hasta que usted crea un objeto de la clase. Crear un objeto de una clase se llama instanciar un objeto. Un objeto creado de una clase de denomina instancia de una clase. Por ejemplo, yo puedo tener una instancia de empleado con el valor en m_nombre=Jose, m_departamento=Sistemas, m_posicion=programador y m_salario=3000000 por ejemplo. Especificadores de acceso C++ utiliza especificadores de acceso para permitir controlar a una clase el acceso a las variables de datos de esa clase. Los especificadores de acceso permiten acceder a algunos miembros de la clase y restringir el acceso a otros. Hay tres especificadores de acceso en C++: public, private y protected. Cuando usted declara público ( public ) un miembro de una clase, usted permite el acceso a tal miembro desde dentro y fuera de la clase. Los miembros de datos que son declarados protegidos ( protected ) son únicamente accesibles por funciones miembro de la clase, pero no se pueden acceder a ellos desde otras clases. Cuando un miembro de una clase es declarado privado ( private ) es ináccesible no sólo desde otras clases y otras partes del programa, sino también desde sus clases derivadas. Las clases derivadas se explicara posteriormente. Miremos el siguiente programa de ejemplo. Se compone de tres partes: la primera una declaración de una clase llamada Empleado: class Empleado { private: char* m_nombre; char* m_departamento; char* m_posicion; long m_salario; public: void ImprimirInfo(); void SetNombre( char* nombre ) { m_nombre = nombre }
void SetDepartamento( char * departamento) { m_departamento = departamento } void SetPosicion ( char* posicion ) { m_posicion = posicion } void SetSalario ( long salario ) { m_salario = salario } const char* GetNombre( ){ return m_nombre } const char* GetDepartamento( ){ return m_departamento } const char* GetPosicion( ){ return m_posicion } const char* GetSalario( ){ return m_salario } }; Las funciones SetNombre, SetDepartamento, setPosicion, setSalario, GetNombre, GetDepartamento, GetPosicion y GetSalario se denominan funciones intercaladas, que son funciones que se declaran en una sola línea. Las variables de miembro son declaradas privadas para que funciones de miembro de otras funciones no tengan acceso a ellas sino a travez de la correspondiente funcion Get o Set. Las funciones de miembro si son declaradas públicas de tal modo que se pueda acceder a ellas desde otras funciones. La definición de la función PrintInfo puede quedar así: void Empleado::ImprimirInfo( ) { cout << "Nombre: " << m_nombre << '\n'; cout << "Departamento: " << m_departamento << '\n'; cout << "Puesto: " << m_posicion << '\n'; cout << "Salario: " << m_salario << '\n'; } Los dos dos puntos ( :: ) se denomina operador de resolución de ambito. Nos indica que la función que estamos definiendo que en este caso es ImprimirInfo, pertenece a la clase Empleado. La tercera parte es la función main. Veamos como podría ser: void main() { //creacion de un objeto de la clase Empleado Empleado empleado12; //asignacion de valores a las variables miembro empleado12.SetNombre("Jose"); empleado12.SetDepartamento("Sistemas"); empleado12.SetPosicion("Programador"); empleado12.SetSalario(3000000); //impresion de los datos empleado12.ImprimirInfo(); } Entonces, primero en : Empleado empleado12;
Apuntadores a objeto : la segunda manera proporciona la memoria necesaria para el objeto y nos otorga la dirección en un apuntador. Con esta alternativa debemos pedir la memoria explícitamente con la palabra reservada new y seremos responsables de liberarla cuando sea necesario, en otras palabras, nos toca destruir el objeto manualmente. Ventaja : tenemos la posibilidad de usar técnicas avanzadas de programación (por ejemplo, polimorfismo). Desventaja : debemos lidiar con la complejidad que implica el uso de apuntadores. Ahora veamos cómo instanciar una persona:
Una operación (como el cálculo del perímetro o el área) que puede realizarse en un objeto Quadrilateral también puede realizarse en un objeto Rectangle. El polimorfismo se implementa por medio de funciones virtual. Cuando se hace una petición por medio de un apuntador de clase base (o referencia) , para utilizar una función virtual , C++ elige la función sobrepuesta correcta en la clase derivada adecuada que está asociada con ese objeto. Hay muchas veces en que una función miembro no virtual está definida en la clase base y sobrepuesta en una clase derivada. Si a una función de estas se le llama mediante un apuntador de clase base al objeto de la clase derivada, se utiliza la versión de la clase base. Si la función miembro se llama mediante un apuntador de la clase derivada, se utiliza la versión de dicha clase derivada. Este comportamiento no es polimórfico. Mediante el uso de funciones virtual y el polimorfismo, una llamada de función miembro puede causar que sucedan diferentes acciones, dependiendo del tipo de objeto que recibe la llamada. Esto le da una capacidad expresiva tremenda al programador. El polimorfismo promueve la extensibilidad: el software que está escrito para llamar al comportamiento polimórfico se escribe en forma independiente de los tipos de objetos a los cuales se envían los mensajes. Por lo tanto los nuevos tipos de objetos que pueden responder a los mensajes existentes se pueden agregar a un sistema, sin modificar el sistema base. #include <iostream.h> #include <math.h> #include <conio.h> // clase Shape class Shape { public: virtual double area() const { return 0.0; } virtual double volume() const { return 0.0; } // funcion virtual pura sobrepuesta en las clases derivadas virtual void print() const= 0 ; }; //////////////////////////////// // clase TwoDimensionalShape /// ////////////////////////////////
class TwoDimensionalShape : public Shape { public: virtual void print () const= 0 ; }; // clase triangulo class triangulo : public TwoDimensionalShape { double lado1, lado2, lado3; public: triangulo (double=0.0, double=0.0, double=0.0); void fijar_triangulo(double, double, double); virtual double area() const; virtual void print() const; }; triangulo :: triangulo (double l1, double l2, double l3){ fijar_triangulo(l1,l2,l3); } void triangulo :: fijar_triangulo (double l1, double l2, double l3){ lado1= l1 > 0? l1 : 0 ; lado2= l2 > 0? l2 : 0 ; lado3= l3 > 0? l3 : 0 ; } double triangulo :: area () const { double s; s=(lado1+lado2+lado3)/ 2 ; return sqrt(s(s-lado1)(s-lado2)*(s-lado3)); } void triangulo :: print () const { cout << endl << "Triangulo" << endl << "Lado 1= " << lado1 << endl << "Lado 2= " << lado2 << endl << "Lado 3= " << lado3; } // clase cuadrado class cuadrado : public TwoDimensionalShape { double lado; public: cuadrado (double=0.0); void fijar_cuadrado(double); virtual double area() const; virtual void print() const; };
double cubo :: volume () const { return ladoladolado; } void cubo :: print() const{ cout << endl << "Cubo" << endl <<"Lado= " << lado; }; // clase paralelepipedo class paralelepipedo : public ThreeDimensionalShape { double largo, ancho, altura; public: paralelepipedo(double=0.0, double=0.0, double=0.0); void fijar_paralelepipedo(double, double, double); virtual double area() const; virtual double volume() const; virtual void print() const; }; paralelepipedo :: paralelepipedo (double l, double a, double h){ fijar_paralelepipedo(l,a,h); } void paralelepipedo :: fijar_paralelepipedo (double l, double a, double h){ largo= l> 0? l : 0 ; ancho= a> 0? a : 0 ; altura= h> 0? h : 0 ; } double paralelepipedo :: area () const { return 2 largoancho + 4 anchoaltura; } double paralelepipedo :: volume () const { return largoanchoaltura; } void paralelepipedo :: print() const{ cout << endl <<"Paralelep¡pedo" << endl <<"Largo= " << largo << endl <<"Ancho= " << ancho << endl <<"Altura= " << altura; } // llama a funcion virtual a partir del apuntador de clase base
// utilizando enlace dinamico void virtualViaPointer (const Shape* baseClassPtr){ baseClassPtr->print(); cout << endl <<"Area= " << baseClassPtr->area() << endl <<"Volumen= " << baseClassPtr->volume() << endl; } // llama a funcion virtual a partir de referencia a clase base // utilizando enlace dinamico void virtualViaReference (const Shape& baseClassRef){ baseClassRef.print(); cout << endl <<"Area= " << baseClassRef.area() << endl <<"Volumen= " << baseClassRef.volume() << endl; } // funcion principal void main(){ clrscr(); triangulo t(5.2,6.5,7.1); virtualViaPointer (& t); virtualViaReference (t); cuadrado c(8.7); virtualViaPointer (&c); virtualViaReference (c); getch(); clrscr(); cubo cub(8.3); virtualViaPointer (&cub); virtualViaReference (cub); paralelepipedo p(4.5,6.7,9.2); virtualViaPointer (&p); virtualViaReference (p); getch(); }
C++ soporta herencia permitiendo a una clase incorporar otra clase dentro de su declaración. Antes de discutir los detalles y la teoría, se procede a comenzar por un ejemplo de herencia. La siguiente clase, llamada 'VehiculoRodante', define muy ampliamente a vehículos que viajan por la carretera. Este almacena el número de ruedas que un vehículo tiene y el número de pasajeros que puede llevar.
return this ->mRuedas; } _/*
https://blanchardspace.wordpress.com/2013/05/06/introduccion-a-c-que-es/ http://elvex.ugr.es/decsai/builder/index.html
El lenguaje C++ presenta grandes herramientas de desarrollo para los programadores como las funciones, bibliotecas, clases y los objetos. De
manera que el programador se ocupa de utilizar dichas herramientas para resolver un problema específico. El lenguaje C++ posee una serie de características que lo hacen distinto del lenguaje C. Aunque es posible verlo como una simple extensión del lenguaje C, en realidad implica un cambio en la forma de pensar por parte del programador.