Beruflich Dokumente
Kultur Dokumente
CAPÍTULOS
1.- INTRODUCCIÓN AL PARADIGMA ORIENTADO
A OBJETOS
4.- CLASES Y OBJETOS
Preguntas detonadoras
¿Qué es una clase?
¿Qué es un objeto?
¿Representa lo mismo una clase que un objeto?
Diversos objetos creados a partir de la misma clase, ¿son
iguales?
¿Qué significa el término instancia?
¿Cómo se logra que un objeto almacene datos y también
realice acciones?
¿Qué es un atributo, propiedad y método?
¿Cuál es la diferencia entre atributo y propiedad?
¿Cómo se diseña el modelo de una aplicación orientada a
objetos?
3
La POO es …
“Un método de implementación en el que los
programas se organizan como colecciones
cooperativas de objetos, cada uno de los cuales
representa una instancia de alguna clase y cuyas
clases son todas miembros de una jerarquía de
clases unidas mediante relaciones”
Grady Booch
Televisión
Lavadora Perro
Persona Factura
Podemos darnos
cuenta que…
Ejemplo: PERRO
Características:
Nombre: “FIDO”
Raza: “Chihuahua”
Color: “Café”
….etc…
Acciones:
Ladrar [“Guau Guau”]
Comer [“Chomp Chomp”]
Dormir [“Zzzzzzzz”]
…etc…
10
11
Abstracción en relación a la
perspectiva del observador.
12
Encapsulamiento
13
Clase
14
Clase
15
Objeto
Unidad que combina datos y funciones.
Datos = Atributos = Características
Funciones = Métodos = Procedimientos =Acciones
Un objeto es creado a partir de una clase.
Los datos y funciones están Encapsulados.
Posee un nombre único (identificador).
Un objeto es del tipo de una clase
“Un objeto es la instancia de una clase”
Un objeto es un ejemplar específico creado con la
estructura de una clase.
16
Instancia
Es la creación o manifestación concreta de un
objeto a partir de su clase
17
Clases y Objetos
“FIDO” es UN “PERRO”
“FIDO” es del TIPO “PERRO”
“FIDO” es un OBJETO
“PERRO” es la CLASE de “FIDO”
18
Clases y objetos
Una clase es básicamente un plano para un tipo de
datos personalizado.
Cuando se define una clase, se utiliza cargándola
en la memoria.
Una clase que se ha cargado en la memoria se
denomina objeto o instancia.
Se crea una instancia de una clase utilizando la
palabra clave de C# new
19
Clases en UML
Cada clase se representa en un rectángulo con tres
compartimentos:
Nombre NombreDeLaClase
(acciones)
20
Dentro de la clase…
Se pueden declarar variables, propiedades,
métodos, delegados, eventos, etc.
21
Modificadores de acceso
public
Accesible a todos los elementos
private
Accesible solo a esa misma clase
protected
Accesible solo a la misma clase y métodos de sus clases
derivadas. No accesible desde el exterior.
internal
Accesible solo a ese ensamblado
protected internal
Accesible desde el mismo ensamblado, la misma clase y
métodos de sus clases derivadas
22
Modificadores de acceso
Accesible desde …
private SI NO NO NO NO
internal SI SI NO SI NO
protected SI SI SI NO NO
protected
SI SI SI SI NO
internal
public SI SI SI SI SI
23
Atributos
Representan los datos de los
objetos
Son controlados a través de la
declaración de variables
Es importante identificar el
tipo de dato
Se debe seleccionar sólo
aquellos atributos necesarios
para el modelo planteado
(abstracción)
24
Atributos o campos
25
Ejemplo: Atributos de un
estudiante
26
27
Tipos de datos en C#
28
29
byte 1 0 255
Int64 ó 8 -9, 223, 372, 036, 854, 775, 808 9, 223, 372, 036, 854, 775, 807
long
UInt64 ó 8 0 18,446,744,073,709,551,615
ulong
float 4 -3.402823E+38 3.402823E+38
30
Identificadores
Pueden iniciar con una letra o _
Evitar caracteres especiales como +, -, &
Puede tener mayúsculas y minúsculas; sin embargo,
edad no es lo mismo que Edad
Puede ser de cualquier longitud; p. ejem.
Edad_alumno, Sueldo_empleado
31
http://www.itnuevolaredo.edu.mx/Takeyas/Ap
untes/POO/Apuntes/02.-
%20NomenclaturaComponentesProyecto.pdf
32
Representación de modificadores
de acceso en C# y UML
Modificador de Codificación en Representación
acceso C# en UML
Privado private
-
Público public
+
Protegido protected
#
Interno internal
~
Protegido interno protected internal
#
34
Métodos
Son las acciones que realizan los objetos y definen su
comportamiento
Atributos:
claveMatrícula: “A-233”
nombre: “Bruno López Takeyas”
void Leer()
grado: 3
grupo: ‘A’ void Investigar()
promedio: 87.4
Acciones:
Leer()
Investigar()
35
36
Crear objetos:
Instanciación
Una vez creada la clase, ya es posible “consumirla”
mediante la instanciación.
La instanciación es el proceso de crear objetos a
partir de una clase.
1. Definir el tipo de
“miObjetoA”
Ejemplo en dos pasos: 2. Adquirir memoria sin
inicializar para el nuevo
ClaseA miobjetoA; objeto usando new.
3. Ejecutar el constructor
miobjetoA = new ClaseA(); para inicializar la
memoria y convertirla en
un objeto usable
Ejemplo en un paso:
ClaseA miobjetoA = new ClaseA();
38
Objetos en UML
En UML un objeto se representa como un rectángulo
con un nombre subrayado
miPersona miAutomóvil miCuentaBancaria
Lectura:
miOtraVariable = miobjetoA . Numero2;
40
Propiedades
Son mecanismos para acceder a los valores (variables) que poseen los
objetos.
Algunos autores las consideran sinónimos de los datos, sin embargo no
siempre lo son (solamente en el caso de las propiedades
autoimplementadas).
Se pueden implementar:
Declarando la variable como public
No sería posible especificarla como Solo-Lectura o Solo-Escritura
No se puede implementar código adicional asociado a la Lectura o Escritura de la
variable.
Implementando propiedades
con accesadores get, set
(Manera recomendada)
42
43
Propiedades autoimplementadas
Codificación de propiedades
autoimplementadas
class Empleado
{
// Propiedades autoimplementadas
public string Nombre
{
get;
set;
}
Ejercicio resuelto 1
Definir una clase para manejar los artículos de un
supermercado cuyos datos son:
Clave numérica
Descripción
Precio
Cantidad en existencia
47
Análisis
a) Investigación preliminar
Investigar los tipos de datos necesarios para administrar la
clave, descripción, precio y cantidad en existencia de un
artículo que vende un supermercado.
48
Análisis (cont.)
c) Datos de entrada
Clave numérica del artículo (atributo:
_intClaveNumerica, propiedad: ClaveNumerica) :
entero
Descripción del artículo (atributo: _strDescripcion,
propiedad: Descripcion) : cadena
Precio del artículo (atributo: _dblPrecio, propiedad:
Precio) : real
Cantidad en existencia del artículo (atributo:
_dblCantidadEnExistencia, propiedad:
CantidadEnExistencia) : real
d) Información de salida
Los mismos datos definidos en la entrada
49
Análisis (cont.)
e) Variables auxiliares
Clase que define los datos de un artículo que vende el
supermercado (Articulo)
Objeto de dicha clase (miArticulo : Articulo)
50
51
Implementación (codificación de la
clase)
class Articulo
{
// Atributos privados
private int _intClaveNumerica;
private string _strDescripcion;
private double _dblPrecio;
private double _dblCantidadEnExistencia;
// Propiedades públicas
public int ClaveNumerica
{
get { return _intClaveNumerica; }
set { _intClaveNumerica = value; }
}
Ejercicio resuelto 2
54
Análisis
a) Investigación preliminar
Investigar la fórmula para convertir una temperatura de grados Farenheit
a grados centígrados. La fórmula es:
55
Análisis (cont.)
c) Datos de entrada
Temperatura en grados farenheit (atributo:
_dblGradosFarenheit, propiedad:
GradosFarenheit) : real
d) Información de salida
Temperatura en grados centígrados
(dblGradosCentigrados: real)
56
Análisis (cont.)
e) Variables auxiliares
Clase que controla la temperatura en grados farenheit y la
convierte a grados centígrados
(TemperaturaGradosFarenheit)
Objeto de dicha clase (miTemperaturaGradosFarenheit :
TemperaturaGradosFarenheit)
57
58
59
Implementación (codificación de la
clase)
class TemperaturaGradosFarenheit
{
// Atributo privado
private double _dblGradosFarenheit;
// Captura la temperatura en °F
Console.Write("Teclee la temperatura en grados farenheit: ");
miTemperaturaGradosFarenheit.GradosFarenheit =
double.Parse(Console.ReadLine());
Console.ReadKey();
}
61
62