Sie sind auf Seite 1von 32

Fundamentos de Programación

CAPÍTULOS
1.- INTRODUCCIÓN AL PARADIGMA ORIENTADO
A OBJETOS
4.- CLASES Y OBJETOS

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 1
Fundamentos de Programación

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

Descarga de utilerías y herramientas


Microsoft Visual Studio (programación en C# .Net)
Nclass (software para el diseño de clases)
WizFlow (software para diseñar diagramas de flujo)

Enlaces de descarga en:


http://www.itnuevolaredo.edu.mx/Takeyas/Materias/POO/descargas.htm

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 2
Fundamentos de Programación

Programación Orientada a Objetos

POO es un conjunto de técnicas que pueden


utilizarse para desarrollar programas
eficientemente.

Los objetos son los elementos principales de


construcción.

La Orientación a Objetos (OO) es el estilo


dominante de programación, descripción y
modelado de hoy en dia.

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 3
Fundamentos de Programación

Programación Orientada a Objetos

Objetos en el mundo real

Televisión
Lavadora Perro

Persona Factura

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 4
Fundamentos de Programación

Podemos darnos
cuenta que…

Los objetos poseen características que


los distinguen entre sí.

Los objetos tienen acciones asociadas


a ellos.
9

Ejemplo: PERRO
Características:
Nombre: “FIDO”
Raza: “Chihuahua”
Color: “Café”
….etc…
Acciones:
Ladrar [“Guau Guau”]
Comer [“Chomp Chomp”]
Dormir [“Zzzzzzzz”]
…etc…
10

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 5
Fundamentos de Programación

Todos los objetos tienen Estado,


Comportamiento e Identidad
Valor de sus Acciones que
características puede realizar Pertenece
(Atributos) (Métodos) a una clase
y tiene un
nombre
único

ESTADO COMPORTAMIENTO IDENTIDAD

11

La abstracción se centra en las


características esenciales de algún objeto,

Abstracción en relación a la
perspectiva del observador.

12

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 6
Fundamentos de Programación

Encapsulamiento

Permite incluir en una sola entidad


información y operaciones que controlan dicha
información.
Permite:
Componentes públicos [Accesibles, Visibles].
Componentes privados [No accesibles, Ocultos].
Restricción de accesos indebidos.

13

Clase

Es una descripción de las


características y acciones para un tipo
de objetos.
Una clase NO es un objeto. Es solo
una plantilla, plano, molde o
definición para crear objetos.

14

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 7
Fundamentos de Programación

Clase

Contiene todas las características comunes de


ese conjunto de objetos
Clase = Modelo = Plantilla = Esquema =
Descripción de la anatomía de los objetos.
A partir de una clase se pueden crear muchos
objetos independientes con las mismas
características.

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 8
Fundamentos de Programación

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”

“CHESTER” es OTRO “PERRO”


“CHESTER” también es del TIPO “PERRO”
“CHESTER” es otro OBJETO
“PERRO” también es la clase de “CHESTER”

18

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 9
Fundamentos de Programación

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

Atributos (datos) Aquí se escriben las características

Métodos y propiedades Aquí se escriben las acciones

(acciones)

20

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 10
Fundamentos de Programación

Dentro de la clase…
Se pueden declarar variables, propiedades,
métodos, delegados, eventos, etc.

Cada elemento puede tener un modificador de


acceso.

Un modificador de acceso especifica quienes están


autorizados a “ver” ese elemento.

Si no se especifica ningún modificador de acceso,


se asume que se trata de un elemento “private”.

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 11
Fundamentos de Programación

Modificadores de acceso
Accesible desde …

Modificador de Clase donde Subclase Subclase Externamente Externamente


acceso se declaró (Mismo (Distinto (Mismo (Distinto
assembly) Assembly) Assembly) Assembly)

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 12
Fundamentos de Programación

Atributos o campos

Un atributo o campo es un dato común a


todos los objetos de una determinada clase.

Las variables declaradas dentro de una clase


son ejemplos de atributos o campos

25

Ejemplo: Atributos de un
estudiante

Atributos: string claveMatricula;


claveMatrícula: “A-233” string nombre;
nombre: “Bruno López Takeyas”
int grado;
grado: 3
grupo: ‘A’ char grupo;
promedio: 87.4 float promedio;

26

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 13
Fundamentos de Programación

Tipos de datos más comunes en


C#
Numérico
Entero (int)
Real (float, double)
Alfanumérico
Caracter (char)
Cadena (string)
Lógico
Booleano (bool)
Calendario
Fecha y hora (DateTime)

27

Tipos de datos en C#

28

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 14
Fundamentos de Programación

Tipos de datos enteros

29

Tipo de Tamaño Valor más pequeño Valor más grande


Dato (bytes)
Sbyte 1 -128 127

byte 1 0 255

Char 2 0 65, 535

Int16 ó 2 -32, 768 32, 767


short
UInt16 ó 2 0 65, 535
ushort
int ó Int32 4 -2, 147, 483, 648 2, 147, 483, 647

uint 4 0 4, 294, 967, 295

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

double 8 -1.79769313486232E+308 1.79769313486232E+308

decimal 16 -79,228,162,514,264,337,593,543,950,335 79,228,162,514,264,337,593,543,950,335

30

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 15
Fundamentos de Programación

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

Nomenclatura sugerida para


identificar los componentes de un
proyecto

http://www.itnuevolaredo.edu.mx/Takeyas/Ap
untes/POO/Apuntes/02.-
%20NomenclaturaComponentesProyecto.pdf

32

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 16
Fundamentos de Programación

Ejemplo: Variables con


modificadores de acceso
class MiClase
{
//Si no se indica, es private
int _intNumero;
private int _intNumero1;

public int intNumero2;


protected int intNumero3 = 99;
internal int intNumero4;
protected internal int intNumero5;
}
33

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 17
Fundamentos de Programación

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

Ejemplo de una clase

36

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 18
Fundamentos de Programación

Ejemplo de una clase


class CuentaBancaria
{
// Declaración de los atributos
public string strNombreCliente;
public DateTime dtmFechaDeInversion;
private double _dblSaldo;

// Definción de los métodos


public int CalcularDiasDeInversion() {
// Aquí se escribe el código de este método
}

private double ConsultarSaldo() {


// Aquí se escribe el código de este método
}

public void Depositar(double dblCantidad, DateTime dtmFecha) {


// Aquí se escribe el código de este método
}

public bool OtorgarBono() {


// Aquí se escribe el código de este método
}
}
37

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 19
Fundamentos de Programación

Objetos en UML
En UML un objeto se representa como un rectángulo
con un nombre subrayado
miPersona miAutomóvil miCuentaBancaria

Los objetos no se crean automáticamente


cuando se declaran
39

Accediendo a los miembros de


los objetos
Asignación:
miobjetoA . Numero2 = 50;

Nombre Selección Miembro


del objeto

Lectura:
miOtraVariable = miobjetoA . Numero2;

40

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 20
Fundamentos de Programación

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.

Declarando un método de acceso a la variable


Empobrece la legibilidad del código. Puede crear confusión.

Utilizando accesadores get{ } y set { } para las propiedades


Recomendado en C#
41

Implementando propiedades
con accesadores get, set
(Manera recomendada)

class Persona class Programa


{
private int _intEdad; {
public int Edad static void Main()
{
get {
{ Persona unaPersona = new
return _intEdad; Persona();
}
set unaPersona.Edad = 25;
{ System.Console.WriteLine
_intEdad = value;
(unaPersona.Edad);
}
} }
} }

42

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 21
Fundamentos de Programación

Ejemplo de clase con propiedades

43

Codificación de la clase y sus


propiedades
class Empleado
{
// Declaración de los atributos privados
private string _strNombre;
private int _intEdad;
private double _dblSueldo;

// Propiedad pública de lectura y escritura del nombre


public string Nombre
{
get
{
return _strNombre;
}
set
{
_strNombre = value;
}
}

// Propiedad pública de solo escritura para la edad


public int Edad
{
set
{
_intEdad = value;
}
}

// Propiedad pública de solo lectura para el sueldo


public double Sueldo
{
get
{
return _dblSueldo;
}
}
}
44

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 22
Fundamentos de Programación

Propiedades autoimplementadas

La propiedad autoimplementada debe tener los descriptores de


acceso get y set; es decir, no puede ser de solo lectura o solo
escritura 45

Codificación de propiedades
autoimplementadas
class Empleado
{
// Propiedades autoimplementadas
public string Nombre
{
get;
set;
}

public int Edad


{
get;
set;
}

public double Sueldo


{
get;
set;
}
}
46

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 23
Fundamentos de Programación

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

Defina los atributos y propiedades de acuerdo a los datos


del artículo, declare y cree un objeto, modifique e
imprima sus valores.

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.

b) Definición del problema


Diseñar una clase que tenga como atributos privados la
clave numérica, descripción, precio y cantidad en
existencia de un artículo de un supermercado.
Declarar y crear un objeto de dicha clase.
Solicitar al usuario que teclee el valor de cada atributo del
objeto.
Una vez capturados todos los datos del artículo, se deben
imprimir para su verificación.

48

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 24
Fundamentos de Programación

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 25
Fundamentos de Programación

Diseño (diagrama de clase)

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; }
}

public string Descripcion


{
get { return _strDescripcion; }
set { _strDescripcion = value; }
}

public double Precio


{
get { return _dblPrecio; }
set { _dblPrecio = value; }
}

public double CantidadEnExistencia


{
get { return _dblCantidadEnExistencia; }
set { _dblCantidadEnExistencia = value; }
}
}
52

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 26
Fundamentos de Programación

Implementación (codificación del método


principal)
static void Main(string[] args)
{
// Declaración y creación de un objeto
Articulo miArticulo = new Articulo();

Console.Write("Teclee la clave del artículo:");


miArticulo.ClaveNumerica = int.Parse(Console.ReadLine());

Console.Write("Teclee la descripción del artículo: ");


miArticulo.Descripcion = Console.ReadLine();

Console.Write("Teclee el precio del artículo: ");


miArticulo.Precio = double.Parse(Console.ReadLine());

Console.Write("Teclee la cantidad en existencia: ");


miArticulo.CantidadEnExistencia = double.Parse(Console.ReadLine());

Console.WriteLine("Clave numérica = " + miArticulo.ClaveNumerica);


Console.WriteLine("Descripción = " + miArticulo.Descripcion);
Console.WriteLine("Precio = " + miArticulo.Precio);
Console.WriteLine("Cantidad en existencia = " + miArticulo.CantidadEnExistencia);
Console.ReadKey();
} 53

Ejercicio resuelto 2

Diseñe una clase para convertir una temperatura de


grados farenheit a grados centígrados. La clase debe
tener un atributo que almacene la temperatura en grados
farenheit, una propiedad de solo escritura para modificar
su valor y un método que haga la conversión. Declare y
cree un objeto al que le introduzca el valor de la
temperatura en grados farenheit y calcule, devuelva e
imprima la conversión. Investigue la fórmula
correspondiente.

54

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 27
Fundamentos de Programación

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:

b) Definición del problema


Diseñar una clase que tenga como atributo privado la temperatura en
grados farenheit con su respectiva propiedad de sólo escritura. Dicha
clase debe contener un método (función) que haga la conversión a
grados centígrados y devuelva el resultado.
Declarar y crear un objeto de dicha clase.
Capturar la temperatura en grados farenheit e introducirla al objeto
correspondiente.
Ejecutar el método de conversión que se ubica dentro del objeto para
calcular la temperatura en grados centígrados y devolver el resultado.
Recibir el valor devuelto por el método para imprimir el resultado.

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

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 28
Fundamentos de Programación

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

Diseño (diagrama de clase)

58

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 29
Fundamentos de Programación

Diseño (diagrama de flujo del


Nombre del
método) método

Nombre de Tipo de dato


la clase del valor
devuelto

59

Implementación (codificación de la
clase)
class TemperaturaGradosFarenheit
{
// Atributo privado
private double _dblGradosFarenheit;

// Propiedad pública de solo escritura


public double GradosFarenheit
{
set { _dblGradosFarenheit = value; }
}

public double ConvertirAGradosCentigrados()


{
return (5 * (_dblGradosFarenheit - 32) / 9);
}
} 60

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 30
Fundamentos de Programación

Implementación (codificación del método


principal)
static void Main(string[] args)
{
// Declaración y creación de un objeto
TemperaturaGradosFarenheit miTemperaturaGradosFarenheit = new
TemperaturaGradosFarenheit();

// Captura la temperatura en °F
Console.Write("Teclee la temperatura en grados farenheit: ");
miTemperaturaGradosFarenheit.GradosFarenheit =
double.Parse(Console.ReadLine());

// Invoca el método para hacer la conversión e imprime el


resultado
Console.Write("La temperatura en °C = " +
miTemperaturaGradosFarenheit.ConvertirAGradosCentigrados().ToStrin
g("N2"));

Console.ReadKey();
}
61

Consejos al diseñar clases y utilizar


objetos
No se deben capturar datos calculables
Los datos calculables NO deben ser atributos
Una vez creado el objeto, primero se deben introducir
sus valores y después ejecutar sus métodos
No se recomienda capturar ni imprimir datos desde un
método ubicado dentro de una clase

62

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 31
Fundamentos de Programación

Otros títulos del autor


http://www.itnuevolaredo.edu.mx/Takeyas/Libro

bruno.lt@nlaredo.tecnm.mx Bruno López Takeyas

Ing. Bruno López Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas 32

Das könnte Ihnen auch gefallen