Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prácticas: POO: Franma 1 / 30
Prácticas: POO: Franma 1 / 30
Prácticas: POO
Franma 1 / 30
Índice
❖ Índice
C++ Básico
C++ POO
C++ Básico
C++ POO
Franma 2 / 30
❖ Índice
C++ Básico
❖ Tipos primitivos
❖ Literales
❖ Punteros y
referencias
❖ Funciones
❖ Operadores C++
❖ Namespace
❖ Variables
constantes
C++ Básico
❖ Referencias
constantes
C++ POO
Franma 3 / 30
Tipos primitivos
❖ Índice
Franma 4 / 30
Literales
❖ Índice
Franma 5 / 30
Entrada/Salida
❖ Índice
Franma 6 / 30
Punteros y referencias
❖ Índice
Punteros:
C++ Básico
❖ Tipos primitivos int * p ; // declaraci ó n puntero
❖ Literales
❖ Punteros y p = & variable ; // direcci ó n de
referencias
❖ Funciones variable = * p ; // indirecci ó n de
❖ Operadores C++
❖ Namespace
int ** pp ; / puntero a puntero
❖ Variables
constantes
❖ Referencias
constantes
Referencias:
C++ POO
int & ref = variable ; // declaraci ó n ref .
Franma 7 / 30
Funciones
❖ Índice
Parámetros por defecto:
C++ Básico
❖ Tipos primitivos // declaraci ó n ( siempre los ú ltimos ):
❖ Literales
❖ Punteros y int funcion ( int a , int b =1 , int c =2);
referencias
❖ Funciones ...
❖ Operadores C++
❖ Namespace
// definici ó n :
❖ Variables int funcion ( int a , int b , int c ) {
constantes
❖ Referencias ...
constantes
C++ POO
}
Franma 8 / 30
Operadores C++
❖ Índice
Además de los operadores de C:
C++ Básico
❖ Tipos primitivos Operador de á mbito :
❖ Literales
❖ Punteros y ::
referencias
❖ Funciones
❖ Operadores C++
❖ Namespace
Identificaci ó n tipo :
❖ Variables typeid ( variable | tipos )
constantes
❖ Referencias
constantes
C++ POO
Memoria din á mica :
new delete
new [] delete []
Franma 9 / 30
Namespace
❖ Índice
Def: zona separada donde se pueden declarar y definir objetos,
C++ Básico
❖ Tipos primitivos
funciones, tipos, clases, estructuras, etc.
❖ Literales
❖ Punteros y
Por defecto: espacio global.
referencias Definición:
❖ Funciones
❖ Operadores C++
❖ Namespace
namespace [ < identificador >] {
❖ Variables ...
constantes
❖ Referencias < declaraciones y definiciones >
constantes
C++ POO
...
}
Activación:
using namespace < identificador >;
Alias:
namespace < alias > = < nombre_original >
Franma 10 / 30
Variables constantes
int var = 1;
const int cte = 2; // valor en declaraci ó n
const int * ptr_a_cte = & var ; // o & cte
int * const ptr_cte_a_var = & var ;
const int * const ptr_cte_a_cte = & var ; // o & cte
Franma 11 / 30
Referencias constantes
Franma 12 / 30
❖ Índice
C++ Básico
C++ POO
❖ Clases
❖ Constructor
❖ Destructor
❖ Definiciones friend
❖ Herencia
❖ Herencia
❖ Override métodos
C++ POO
❖ Sobrecarga op.
❖ Override métodos
virtual
Franma 13 / 30
Clases
❖ Índice
Franma 14 / 30
Constructor
❖ Índice
• Mismo nombre que la clase.
C++ Básico
• Por defecto: si no se define ningún constructor el
C++ POO
❖ Clases compilador creará uno sin parámetros, que no hace nada.
❖ Constructor
❖ Destructor
• Uso constructor por defecto:
❖ Definiciones friend
❖ Herencia
Clase variable (); // MAL
❖ Herencia Clase variable ; // BIEN sin par é ntesis
❖ Override métodos
❖ Sobrecarga op.
❖ Override métodos
• Asignación rápidas (solo constructor):
virtual
Clase :: Clase ( int par_a , int par_b ) {
a = par_a ;
b = par_b ;
}
// Hay que cambiarlo por :
Clase :: Clase ( int par_a , int par_b ):
a ( par_a ) , b ( par_b ) {}
Franma 15 / 30
Constructor
❖ Índice
• Con argumentos por defecto:
C++ Básico
Franma 16 / 30
Destructor
❖ Índice
• Mismo nombre de la clase con
C++ Básico
• Sin tipo de retorno ni parámetros.
C++ POO
❖ Clases • No se heredan.
❖ Constructor
❖ Destructor
• Deben ser públicos.
❖ Definiciones friend • No pueden ser sobrecargados.
❖ Herencia
❖ Herencia
❖ Override métodos
❖ Sobrecarga op.
❖ Override métodos
virtual
Franma 17 / 30
Definiciones friend
❖ Índice
Franma 18 / 30
Herencia
❖ Índice
Franma 19 / 30
Herencia
❖ Índice
Franma 21 / 30
Override métodos
❖ Índice
• Sustituye/override un método de la clase base.
C++ Básico
• Idéntica signatura.
C++ POO
❖ Clases • Se invocan según el tipo de la variable.
❖ Constructor
❖ Destructor
❖ Definiciones friend
❖ Herencia
❖ Herencia
❖ Override métodos
❖ Sobrecarga op.
❖ Override métodos
virtual
Franma 22 / 30
Override métodos
❖ Índice
Franma 23 / 30
Sobrecarga operadores
❖ Índice
Operadores que no se pueden sobrecargar:
C++ Básico
Franma 24 / 30
Sobrecarga operadores
❖ Índice
• Como una función friend.
C++ Básico
• Como miembro de una clase.
C++ POO
❖ Clases
❖ Constructor
❖ Destructor
Clase operator +( const Clase & otro )
❖ Definiciones friend friend Clase & operator +( const Clase & a ,
❖ Herencia
❖ Herencia
const Clase & b )
❖ Override métodos
❖ Sobrecarga op.
❖ Override métodos
virtual
Franma 25 / 30
Sobrecarga « y »
❖ Índice
Siempre como funciones friend:
C++ Básico
Franma 26 / 30
Sobrecarga ++
❖ Índice
Preincremento:
C++ Básico
Franma 27 / 30
Override métodos virtual
❖ Índice
• virtual indica método polimórfico.
C++ Básico
• override (opcional) indica override de un método virtual.
C++ POO
❖ Clases • Sustituye/override un método de la clase base.
❖ Constructor
❖ Destructor
• Idéntico prototipo (signatura + tipo devuelto).
❖ Definiciones friend • Se invocan según el tipo del objeto.
❖ Herencia
❖ Herencia
❖ Override métodos
❖ Sobrecarga op.
❖ Override métodos
virtual
Franma 28 / 30
Override métodos virtual
❖ Índice
Franma 29 / 30
Método virtual puro
❖ Índice
• Método sin implementación.
C++ Básico
• Pensado para heredar.
C++ POO
❖ Clases • La clase que lo contiene: clase abstracta.
❖ Constructor
❖ Destructor
❖ Definiciones friend class Base {
❖ Herencia
❖ Herencia
virtual int suma ( int , int )=0;
❖ Override métodos };
❖ Sobrecarga op.
❖ Override métodos
virtual
class Derivada }: Base {
int suma ( int , int ) override {
...
}
};
Franma 30 / 30