Este documento describe las características principales del lenguaje C++. Explica las extensiones de C++ respecto a C, como las orientadas y no orientadas a objetos. También describe conceptos clave como la organización de programas, tipos de datos, funciones, clases, herencia y más.
Tecnológico Nacional de México
Ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 2: clases y objetos en C#.Net
Material desarrollado para la asignatura de Programación Orientada a Objetos, que se cursa en el segundo semestre de la carrera de ISC.
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
Tecnológico Nacional de México
Ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 2: clases y objetos en C#.Net
Material desarrollado para la asignatura de Programación Orientada a Objetos, que se cursa en el segundo semestre de la carrera de ISC.
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
3. Lenguaje C++
Extensiones respecto al C
• No orientadas a objeto
– Mejoras en entrada/salida - streams
– Sobrecarga de funciones y operadores
– Parámetros por defecto. Referencias
4. Lenguaje C++
• Organización de programas
– Ficheros de declaraciones (.h)
• Del sistema
• Del usuario (#ifndef .... #define ..... #endif)
– Ficheros de código fuente (.cc, .cpp)
5. Lenguaje C++
• Scope (alcance)
– Fichero: declaraciones que no pertenecen a función
o clase alguna
– Función: etiquetas
– Local: cualquier nombre declarado en un bloque
pertenece al bloque.
– Clase: declaraciones asociadas a una clase
• Cada variable tiene un “scope” o un contexto
6. Lenguaje C++
• Operadores y sentencias
– Sentencias
• Misma sintaxis y semántica que las de C
– Operadores idem sentencias excepto:
• new, delete, delete[], ::
• <<, >>
• Sobrecarga
8. Lenguaje C++
Elementos del programa
• COMENTARIOS
• // Comentario de una sola línea
• /* Comentario multilínea */
• BLOQUES DE CÓDIGO
• { Todos los bloques de código van entre corchetes }
• FIN DE LINEA
• Todas las instrucciones terminan con un punto y coma
9. Lenguaje C++
Tipo básico de datos
• Tipo de dato bool tiene dos valores
asociados true o false
• DECLARACIÓN DE UNA
VARIABLE
• <Tipo de dato> Nombre_variable;
• INICIALIZACION DE UNA
VARIABLE
• <Tipo de dato> Nombre_variable
= [valor];
• EJEMPLO:
• int variable1;
• bool variable2=true;
10. Lenguaje C++
Tipo básico de datos
• Variables y aritmética.
• Todo nombre y/o expresión tiene un tipo.
• El tipo determina las operaciones que se pueden
realizar con el.
• Conversiones implícitas.
• En asignaciones y operaciones algebraicas el
lenguaje lleva a cabo todas las conversiones
implícitas que faciliten el uso y sean seguras.
11. Lenguaje C++
Arreglos
• Un arreglo es un conjunto de tipos de datos básicos
• DECLARACIÓN DE UN ARREGLO
• <Tipo de dato básico> Nombre_variable[Número de elementos];
• INICIALIZACION DE UN ARREGLO
• <Tipo de dato> Nombre_variable = {valor1, valor2, …, valorN}];
• EJEMPLO:
• char arreglo1[10];
• float arreglo2={1.5, 2.3, 6,7};
12. Lenguaje C++
Arreglos Multidimencionales
• DECLARACIÓN DE UN ARREGLO
MULTIDIMENCIONAL
• <Tipo de dato básico> Nombre_variable[Número de
elementos][Numero de elementos];
• INICIALIZACION DE UN ARREGLO
MULTIDIMENCIONAL
• <Tipo de dato> Nombre_variable = { {valor1, valor2, …,
valorN}, {valor1, valor2, …, valorN} };
• EJEMPLO:
• char arreglo1[10][10];
• int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};
13. Lenguaje C++
Apuntadores y vectores
• Punteros y vectores.
char v[10]; //vector de 10 caracteres (0 a 9)
char *p; // puntero a un carácter
p = &v[3]; //p apunta al cuarto elemento de v
• punteros - operaciones asociadas
– int *p; //puntero a entero
– int **p; //puntero a puntero a entero
– int (*vp) [10]; //puntero a vector de 10 enteros
– int (*fp) ( char, char *);// puntero a función
14. Lenguaje C++
Tipos definidos por el usuario
• ESTRUCTURAS (Registros)
struct date_s {
int day, month, year;
} aDate;
La definición de arriba de aDate es también la declaración de una
estructura llamada date_s. Podemos definir otras variables de
este tipo referenciando la estructura por el nombre:
struct date_s anotherDate;
• Enumeraciones
• Clases
16. Lenguaje C++
Operadores
Los operadores de incremento
++ y -- pueden ser
explicados por medio del
siguiente ejemplo. Si tienes la
siguiente secuencia de
instrucciones
a = a + 1; b = a;
Se puede puedes usar
b = a++;
b = ++a;
18. Lenguaje C++
Sobrecarga de operadores
class complex {
double re, im;
public:
complex(double r, double i) : re(r), im(i){}
complex operator+(complex);
complex operator*(complex);
bool operator==(complex);
bool operator<(complex);
};
void f()
{ complex a(1, 3.1);
complex b(1.2, 2);
complex c = b;
if(a==b)
a = b + c;
b = b + c * a;
c = a * b + complex(1,2);
}
19. Lenguaje C++
Funciones
• Regulares (similares a una función C).
• Miembros (asociadas a una clase).
• Nombre, lista de argumentos, tipo de retorno y cuerpo.
• int miFuncion(int a); //firma o declaración
• int miFuncion(int a){ //definición
cout<<a;
• }
21. Lenguaje C++
Funciones
• Paso de argumentos
– Por valor - seguridad
• copiado en el almacenamiento local de la función
• la función accede a la copia
– Por referencia - velocidad - retornos múltiples
• se copia la dirección del objeto que se esta pasando
• la función accede al objeto
– Por referencia constante - seguridad + velocidad
• Vectores: paso por referencia
22. Lenguaje C++
Funciones
• Paso de argumentos
– Por valor
char a = ‘a’;
miFuncion(a);
– Por referencia
char a = ‘a’;
miFuncion(&a);
• Vectores: paso por referencia
char a[] = {‘a’,’b’}
miFuncion(a);
23. Lenguaje C++
Funciones
• Sobrecarga de nombres.
– int max(int, int);
– int max( int, int, int);
– int max(int *, int);
– int max(float, int);
– int max(int, float);
24. Lenguaje C++
Soporte para abstracción de datos
• Definición de un conjunto de operaciones asociadas
a un tipo.
• Restricción del conjunto de operaciones que se
pueden realizar sobre un tipo a las definidas para el
mismo.
• CLASE
– nombre
– datos miembros
– funciones miembro
– control de acceso
25. Lenguaje C++
Soporte para abstracción de datos
• Inicialización y destrucción.
• Inicialización y asignación.
• Patrones.
• Conversiones de tipo
complex a = complex(1);
• Múltiples implementaciones
26. Lenguaje C++
Soporte para orientacion a objetos
• Funciones virtuales. Polimorfismo.
• Clases abstractas.
• Clases patrón.
• Herencia simple y múltiple.
• Encapsulado.
27. Lenguaje C++
• Los objetos se crean al llegar a su definición.
• Los objetos se destruyen cuando salen del
bloque.
• Los objetos globales se crean una sola vez y se
destruyen al terminar el programa.
• Los objetos static son similares a los globales.
28. Lenguaje C++
• Almacenamiento de objetos
– estático (asignada al iniciarse el programa)
– automático (asociada al bloque)
– en la memoria disponible (obtenida con new)
29. Lenguaje C++
Clases.
Tipo abstracto de datos definido por el usuario
Interface e implementación
class X {
private:
int i;
public:
f();
protected:
g();
};
struct X {
private:
int i;
public:
f();
protected:
g();
};
30. Lenguaje C++
clases
• Constructores
– Funciones con el mismo nombre de la clase pero
que no retornan nada.
– Constructor de copia
– Constructor por defecto
– Constructores como conversores de tipo
• Destructores
– virtuales
31. Lenguaje C++
clases
• CONSTRUCTORES
• class Point {
– int _x, _y;
– public: Point() { _x = _y = 0; }
– void setX(const int val);
– void setY(const int val);
– int getX() { return _x; }
– int getY() { return _y; }
• };
32. Lenguaje C++
clases
• DESTRUCTORES
• class Point {
– int _x, _y;
– public:
– Point() { _x = _y = 0; }
– Point(const int x, const int y) { _x = x; _y = y; }
– ~Point() { /* ¡Nada qué hacer! */ }
– void setX(const int val);
– void setY(const int val);
– int getX() { return _x; }
– int getY() { return _y; }
• };
33. Lenguaje C++
clases
• Friend
• Nosotros podemos definir que funciones o clases sean amigos de una clase para
permitirles acceso directo a sus miembros de datos privados. Por ejemplo, que la
función para el operador + tuviese acceso a los miembros de datos privados _real e
_imag de la clase Complex. Con ese fin declaramos que el operador + sea amigo de la
clase Complex:
• class Complex {
• ... public: ...
• friend Complex operator +( const Complex &, const Complex & );
• };
• Complex operator +(const Complex &op1, const Complex &op2) {
• double real = op1._real + op2._real, imag = op1._imag + op2._imag;
return(Complex(real, imag));
• }
34. Lenguaje C++
clases
• Construcción de objetos
– automáticos
• variables locales: se ejecuta su constructor cada vez que el programa
pasa por la declaración
– secuencia de construcción - destrucción
• inicialización y asignación
– en memoria disponible
• new, delete
– int* ip = new int(7);
– delete ip;
– int* iap = new int[10];
– delete [] iap;
35. Lenguaje C++
clases y herencia
• class Point3D : public Point {
• int _z;
• public:
– Point3D() { setX(0); setY(0); _z = 0; }
– Point3D(const int x, const int y, const int z) { setX(x);
setY(y); _z = z; }
– ~Point3D() { /* Nada que hacer */ }
– int getZ() { return _z; }
– void setZ(const int val) { _z = val; }
• };
36. Lenguaje C++
clases y herencia múltiple
• class DrawableString : public Point, public
DrawableObject {
• ... public:
– DrawableString(...){ ... }
– ~DrawableString() { ... } ...
• };