Professional Documents
Culture Documents
B ib li o g r a fí
Bibliografía
Ejemplo:
María la florista
Perla la florista
José el florista
Conceptos básicos
Cliente Servidor
Mensaje
Emisor Receptor
Objeto, Objeto
Usuario,
Aplicación
Conceptos básicos
Una clase es:
• una categoría de objetos con características
comunes.
• una plantilla que se usa para crear múltiples objetos
con características similares.
Ejemplo: Florista
Conceptos básicos
Buenas Prácticas:
• Nombrar las clases utilizando la notación Camell,
comenzando o no con la letra T para indicar que es
un tipo de datos.
• Colocar la apertura de ambiente en la misma línea
o en una línea aparte.
Implementación
// Sintaxis en Java
[<visibilidad>]class Circulo {
[<miembros>]
}
// Sintaxis en C++
class <nombre de la clase>
{
private: [lista de miembros]
protected: [lista de miembros]
public: [lista de miembros]
};
Conceptos básicos
Cada clase puede estar compuesta por:
Florista
Nombre
Variables Miembros Salario
Edad
Funciones miembros Vender flores
Enviar flores a otra ciudad
Bombillo
Consumo
Variables Miembros Enceder
Apagar
Funciones miembros Aumentar Brillo
Disminuir brillo
Atributos o variables miembros
Los atributos son características, propiedades que
hacen que un objeto se diferencie del otro. Pueden
determinar apariencia, cualidades, estado, etc.
<Tipo> <nombreAtributo>;
//en C++
Tipo nombreAtributo;
Variables de clases
• Define un atributo para toda la clase.
Buenas prácticas
Definir cada atributo en una línea independiente
aunque sean del mismo tipo.
Hace el código más legible y permite comentar mejor.
Modificadores de atributos
La palabra reservada final calificando a un atributo o
variable sirve para declarar constantes.
Es posible definir:
• Métodos de instancia: aplican a cada objeto de la
clase.
• Funciones (procedimientos)
• Constructores
• Destructores
Tipo-retorno
Es el tipo primitivo o la clase del valor devuelto.
void indica que no hay valor de retorno.
Nombre
Debe expresar claramente lo que se hace en el
cuerpo del método.
Definiendo métodos
<tipo-retorno/void> nombre ([lista de parámetros]) {
//cuerpo del método
}
Lista de parámetros
Conjunto de declaraciones de variables (tipo-variables)
separadas por coma que reciben valor al invocar al
método. Aunque dos parámetros tengan el mismo tipo
no se puede abreviar.
Los párametros se convierten en variables locales en
el cuerpo del método.
Si un parámetro se declara const (en C++) o final (en
Java) no se puede variar en el cuerpo del método.
Definiendo métodos
<tipo-retorno/void> nombre ([lista de parámetros]) {
//cuerpo del método
}
Lista de parámetros
Puede que un método no tenga parámetros.
Los parámetros se inicializan en cada llamada al
método al cual pertenecen con los valores
especificados al llamarlos.
En C++ se permite que los parámetros tengan valores
por defecto.
Parámetros-Valores por defecto
• Una función miembro puede tener o no valores por
defecto.
• Si los tiene, a partir del primero que sea por defecto,
el resto tiene que ser por defecto.
• Los valores por defecto no pueden redeclararse.
class Clase {
void f(int = 1);
void h(int);
//error, 2do tiene que ser por defecto
void g(int = 1, int, int =2);
void m(int, int, int =2); // ok
};
En la lista de argumentos:
• el número
• el tipo de los argumentos
• o ambos
Esto se conoce como sobrecarga de métodos.
En C++:
• es posible definir variables y funciones que no
pertenezcan a una clase.
• las clases se declaran en un fichero <nombre>.h y
se implementan sus métodos en un fichero
<nombre>.cpp a menos que la función sea inline.
Ejemplo en Java
// en Java, fichero.java
class Date {
int d;
public:
int D() {
return d;
}
}
Ejemplo en C++
// en C++, fichero.h // en C++, fichero.h
class Date { class Date {
int d; int d;
public: public:
//por defecto es inline int D();
int D(){return d;} };
};
//En fichero.cpp
inline int Date::D() {
return d;
}
//otra variante
int Date::D() {
return d;
}
Funciones inline (C++)
• Útil para funciones pequeñas y frecuentemente
usadas.
Características
• Su nombre coincide con el de la clase.
• No tiene valor de retorno (ni void)
• Una clase puede tener varios constructores (ejemplo
típico de sobrecarga de funciones), pero la lista de
parámetros tiene que variar.
• Los constructores deben diferir en tipo y/o cantidad
de parámetro.
Constructor
Características
TDate(TDate&)
Fecha::Fecha(Fecha& pFecha) {
d = pFecha.d;
m = pFecha.m;
a = pFecha.a;
}
Creando una instancia en Java
Circulo c = new Circulo();
// equivale a
Circulo c;
c = new Circulo();
Nombre de la clase
TDate date(30,9,2000);
Circulo Punto
ClaseA claseA(3);
int i = claseA.A(); // i=3
i = claseA.B(claseA); // error, B no es miembro de TClaseA
i = claseA.C(); // i=8
Clases amigas (en C++)
class ClaseB;
class ClaseA { TClaseA declara a TClaseB
friend ClaseB;
int a;
como amiga.
char AA(){return a;} Esto permite que TClaseB
public: acceda a todos los atributos y
ClaseA(int pA){a = pA;} métodos de la clase TClaseA
int A(){return a;} aunque sean privados.
};
class ClaseB {
int b;
public:
ClaseB(int pB){b = pB;}
int B(ClaseA& pClaseA){return pClaseA.a;}
char BB(ClaseA& pClaseA){return pClaseA.AA();}
};
Visibilidad en C++
class TExample
{
private: [lista de miembros]
protected: [lista de miembros]
public: [lista de miembros]
};
private: Utilizados por funciones miembros de la
propia clase o por amigas de la clase.
Privados (private)
Públicos (public)
Protegidos (protected)
Atributos
∅
Métodos
Encapsulamiento
Es una de las propiedades de la POO que define que
el objeto debe ser una cápsula o caja negra que
encapsula su funcionamiento y estructura interna.
INTERFAZ de la CLASE
CLASE
CLAS E
Datos y
Funciones Miembros
Privadas, Protegidas y
de Paquete
instancia1 instancia2
Encapsulamiento
El encapsulamiento permite:
• Simplificar el programa.
Ejemplo:
Point pt1, pt2; Punto1: 200, 200
pt1 = new Point (100, 100); Punto2: 200, 200
pt2 = pt1;
pt1.x= 200;
pt1.x= 200;
System.out.println(“Punto1: = ” + pt1.x + ”, “ + pt1.y);
System.out.println(“Punto2: = ” + pt2.x + ”, “ + pt2.y);
Referencias en Java
Punto p1;
Punto p2;
p1 = new Punto(100, 100);
p2 = p1;
p1.x = 200;
p1.x = 200;
System.out.println(“Punto1: = ” + p1.x + “, ”
+ p1.y);
System.out.println(“Punto2: = ” + p2.x + “, ”
+ p2.y);
Circulo c = c1.elMayor(c2);
Circulo c = Circulo.elMayor(c1, c2);
Fecha fecha(5,1,2000);
fecha.IncA(4);
Buenas prácticas
Hay que ser muy cauteloso al nombrar todos los
tipos de variables
Alcance de variables
En C++, las clases tienen su propio ámbito.
int a = 1; // variable global
class TClase
{
int a;
public:
TClase(int);
};
TClase clase(5);
TClase.a; // error, trata de encontrala en el
// ámbito de TClase y es privada.
C++ y Java
La pila: Se ubica en el área de la memoria RAM y el
almacenamiento en ella es extremadamente rápido y
eficiente. El compilador de Java debe saber mientras
crea el programa, el tamaño exacto y el tiempo de
vida de todos los datos que se almacenan en la pila.