Publicado el 17 de Febrero del 2019
1.761 visualizaciones desde el 17 de Febrero del 2019
1,0 MB
27 paginas
Creado hace 5a (15/08/2018)
Programación Orientada a Objetos en C# .NET
CAPÍTULO 4
CLASES Y OBJETOS
2
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
1
Programación Orientada a Objetos en C# .NET
Preguntas detonadoras
¿Cómo se pueden establecer restricciones de acceso a los
componentes definidos en una clase?
¿Qué es un mutator y un accessor? ¿Para qué sirven?
¿A qué se refiere la sentencia this? ¿Para qué sirve?
¿Cuándo se utiliza?
¿Cuándo
se
recomienda
utilizar
una
propiedad
autoimplementada?
¿Se pueden definir varios métodos con el mismo nombre
en una clase?
El constructor de una clase, ¿crea un objeto?
El destructor de una clase, ¿elimina un objeto?
3
Espacios de nombres (namespace)
Organizan los diferentes componentes
Un programa puede contener varios namespaces
Un namespace puede contener muchas clases
El programador puede crear sus propios
namespaces
Para accesar a namespaces se usa la directiva using:
using System;
using System.Array;
4
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
2
Programación Orientada a Objetos en C# .NET
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
Clases en UML
Cada clase se representa en un rectángulo con tres
compartimentos:
Nombre
Atributos
NombreDeLaClase
Aquí se escriben las características
Métodos y propiedades
Aquí se escriben las acciones
5
6
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
3
Programación Orientada a Objetos en C# .NET
Cómo declarar una clase
class nombre_de_la_clase
{
}
… contenido de la clase …
7
propiedades,
Dentro de la clase…
Se
métodos, delegados, eventos, etc.
pueden declarar
variables,
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”.
8
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
4
Programación Orientada a Objetos en C# .NET
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
9
Modificadores de acceso
Accesible desde …
Modificador de
acceso
Clase donde
se declaró
private
internal
protected
protected
internal
public
SI
SI
SI
SI
SI
Subclase
(Mismo
assembly)
NO
SI
SI
SI
SI
Subclase
(Distinto
Assembly)
Externamente
Externamente
(Mismo
Assembly)
(Distinto
Assembly)
NO
NO
SI
SI
SI
NO
SI
NO
SI
SI
NO
NO
NO
NO
SI
10
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
5
Programación Orientada a Objetos en C# .NET
Ejemplo: Variables con
modificadores de acceso
class claseA
{
//Si no se indica, es private
int numero;
private int numero1;
public int numero2;
protected int numero3 = 99;
internal int numero4;
protected internal int numero5;
}
11
Representación de modificadores
de acceso en C# y UML
Modificador de
Codificación en
Representación
acceso
Privado
Público
C#
private
public
Protegido
protected
Interno
internal
Protegido interno
protected internal
en UML
-
+
#
~
#
12
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
6
Programación Orientada a Objetos en C# .NET
Miembros estáticos y de
instancia
Miembro estático (static): Sólo se crea una
copia del miembro de la clase. Se crea
cuando se carga la aplicación que contiene la
clase
la
aplicación
existe mientras
y
se
ejecute
Miembro de instancia: Se crea por default. Se
crea una copia para cada instancia de la clase.
13
Miembros estáticos y de
instancia
Un miembro estático es un método o campo al
que se puede obtener acceso sin hacer referencia
a una instancia determinada de una clase
No es necesario crear una instancia de la clase
contenedora para llamar al miembro estático
Cuando se tiene acceso a métodos estáticos,
puede utilizar el nombre de clase, no el nombre
de instancia
14
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
7
Programación Orientada a Objetos en C# .NET
Declaración de miembros
estáticos
Cuando declara un campo de clase estático, todas las
instancias de esa clase compartirán ese campo
Una clase estática es una cuyos miembros son todos
estáticos
static void Main(string[] args)
{
}
Console.WriteLine(“Tec Laredo”);
Miembro estático
15
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
16
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
8
Programación Orientada a Objetos en C# .NET
Ejemplo de una clase
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
}
}
17
18
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
9
Programación Orientada a Objetos en C# .NET
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.
Ejemplo en dos pasos:
ClaseA miobjetoA;
miobjetoA = new ClaseA();
1. Definir el tipo de
“miObjetoA”
2. Adquirir memoria sin
3.
inicializar para el nuevo
objeto usando new.
Ejecutar el constructor
para inicializar la
memoria y convertirla en
un objeto usable
Ejemplo en un paso:
ClaseA miobjetoA = new ClaseA();
19
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
20
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
10
Programación Orientada a Objetos en C# .NET
Declaración de objetos globales
namespace CircunferenciaFormas
{
public partial class Form1 : Form
{
// Aquí se declaran los objetos globales
// Declaración del objeto global
CuentaBancaria cuentaCheques;
// Creación del objeto global
cuentaCheques = new CuentaBancaria();
// Declaración y creación del objeto global en una sola línea
CuentaBancaria cuentaAhorros = new CuentaBancaria();
public Form1()
{
InitializeComponent();
}
...
Accediendo a los miembros de
los objetos
Asignación:
miobjetoA . Numero2 = 50;
Nombre
del objeto
Selección
Miembro
Lectura:
miOtraVariable = miobjetoA . Numero2;
21
22
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
11
Programación Orientada a Objetos en C# .NET
Métodos
Contienen instrucciones para ejecutar al momento
de ser invocados.
Un método contiene:
Modificador de Acceso (Determina su visibilidad)
Tipo de dato (Devuelto al finalizar su ejecución)
Identificador (Nombre con el cual se invoca)
Parámetros (Cero o mas variables que recibe el método)
No es recomendable diseñar clases cuyos métodos
implementen código para capturar y/o mostrar los valores
de sus atributos, ya que se pierde la reusabilidad de esa
clase en aplicaciones con otras plataformas
23
Uso de mutator y accessor
Al trabajar con objetos, primero deben introducirse los
valores de sus atributos y después ejecutar las acciones
invocando sus métodos.
24
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
12
Programación Orientada a Objetos en C# .NET
Diagramas de flujo de los métodos
de una clase
Circunferencia.ModificarRadio(double dblR): void
Circunferencia.ConsultarRadio(): double
_dblRadio = dblR
return
return( _dblRadio )
Circunferencia.CalcularArea(): double
Circunferencia.CalcularPerimetro(): double
Declaraciones locales:
dblArea: double
Declaraciones locales:
dblPerimetro: double
dblArea = Math.PI * _dblRadio * _dblRadio
dblPerimetro = Math.PI * _dblRadio * 2
return(dlbArea)
return(dlbPerimetro)
25
Codificación de la clase
class Circunferencia
{
// Declaración del atributo privado
private double _dblRadio;
// Mutator
public void ModificarRadio(double dblR)
{
_dblRadio = dblR;
}
// Accessor
public double ConsultarRadio()
{
return (_dblRadio);
}
// Método público para calcular el área
public double CalcularArea()
{
// Declaración de variable local
double dblArea;
dblArea=Math.PI * _dblRadio * _dblRadio;
return (dblArea); // Devuelve el resultado
}
// Método público para calcular el perímetro
public double CalcularPerimetro()
{
// Declaración de variable local
double dblPerimetro;
dblPerimetro=Math.PI * _dblRadio * 2;
return (dblPerimetro);
// Devuelve el resultado
}
}
26
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
13
Program
Comentarios de: 04.-Clases Y Objetos - Programación Orientada a Objetos en C# (0)
No hay comentarios