Está en la página 1de 56

PROGRAMACIÓN ORIENTADA A OBJETOS

Estructura básica de un programa en C#


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
//declaración de variables globales
static void Main(string[] args)
{

}
}
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Identificadores
Un identificador le da nombre único a un elemento en un programa
(Variables, procedimientos, etc.).
• No puede contener operadores como + - * /
• Debe iniciar con letra o el guion bajo ( _ )
• Puede tener cualquier longitud
• Puede contener mayúsculas y minúsculas
• En un identificador sí se hace diferencia entre mayúsculas y
minúsculas. De esta manera, “suma” es diferente de “Suma”
• No debe ser una palabra reservada
PROGRAMACIÓN ORIENTADA A OBJETOS
Tipos de Datos
• int número entero
• double número flotante
• char un solo carácter
• string cadena de caracteres
• bool booleano (Verdadero, Falso)
• DateTime fecha/hora
PROGRAMACIÓN ORIENTADA A OBJETOS
Declaración de Variables
string Nombre;
int HorasTrabajadas;
double SueldoPorHora;
char Otro;
También se pueden inicializar las variables al mismo tiempo que se declaran:
string Nombre = “Juan”;
int HorasTrabajadas = 40;
double SueldoPorHora = 150.00;
char Otro = 'N';
PROGRAMACIÓN ORIENTADA A OBJETOS
Impresión de información (Proyectos de Consola)

Console.WriteLine (" Hola ");


Console.WriteLine( Sueldo );
Console.WriteLine ( " Mi nombre es {0} y gano {1} ", Nombre, Sueldo);

Parámetros de sustitución
Console.WriteLine (" Nombre: " + Nombre);

Concatenación
PROGRAMACIÓN ORIENTADA A OBJETOS
Sentencias using

Si se agregan al inicio de la clase, NO es necesario repetirlas en cada


instrucción.
Por ejemplo, si al inicio de la clase se agrega:
using System;
puede usarse durante toda la clase:
Console.WriteLine( “ Hola Mundo ” );
en lugar de:
System.Console.WriteLine( “Hola Mundo ” );
PROGRAMACIÓN ORIENTADA A OBJETOS
Pedir Datos (captura en proyectos de consola)

Nombre = Console.ReadLine();
HorasTrabajadas = Convert.ToInt32(Console.ReadLine());

El resultado se almacena Pedir un dato String


en esta variable

Conversión de String a Entero


TAMBIEN puede hacerse así:

HorasTrabajadas = int.Parse(Console.ReadLine());
PROGRAMACIÓN ORIENTADA A OBJETOS
Cálculos y Asignaciones

SueldoTotal = HorasTrabajadas * SueldoPorHora;

Descuento = SueldoTotal * 0.08;


Cálculos

SueldoTotal = SueldoTotal - Descuento;


Asignación

Bonos = 200;

SueldoTotal = SueldoTotal + Bonos;


PROGRAMACIÓN ORIENTADA A OBJETOS
Operadores Aritméticos

+ Suma
- Resta Jerarquía:
* Multiplicación Primero se ejecutan * / (el que está más a la izuierda)
Después se ejecutan + - (el que está más a la izuierda)
/ División Los paréntesis alteran la jerarquía
% Residuo de división entera
= Igualdad
++ Incremento en 1
-- Decremento en 1
PROGRAMACIÓN ORIENTADA A OBJETOS
Operadores de asignación adicionales
Sirven para simplificar expresiones de asignación. Ejemplos:
a += 5 → a = a + 5
a -= 5 → a = a - 5
a *= 5 → a = a * 5
a /= 5 → a = a / 5

Ejemplos con los Operadores de Autoincremento:


x ++ → x = x + 1
x -- → x=x-1
PROGRAMACIÓN ORIENTADA A OBJETOS
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 reservada new
PROGRAMACIÓN ORIENTADA A OBJETOS
Cómo declarar una clase

class nombre_de_la_clase
{
//contenido de la clase …
}
PROGRAMACIÓN ORIENTADA A OBJETOS
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”.
PROGRAMACIÓN ORIENTADA A OBJETOS
Modificadores de acceso
Cuando no se indica el modificador de acceso por default es private

• 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
PROGRAMACIÓN ORIENTADA A OBJETOS
Modificadores de acceso
PROGRAMACIÓN ORIENTADA A OBJETOS
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.
PROGRAMACIÓN ORIENTADA A OBJETOS
// Ejemplo de una clase private double ConsultarSaldo() {
class CuentaBancaria …
{ }
public string strNombreCliente; public void Depositar(double
dblCantidad, DateTime dtmFecha) {
public DateTime dtmFechaDeInversion;

private double _dblSaldo;
}
public int CalcularDiasDeInversion() {
public bool OtorgarBono() {
… …
} }
}// fin de la clase
PROGRAMACIÓN ORIENTADA A OBJETOS
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();

Ejemplo en un paso:
ClaseA miobjetoA = new ClaseA();
PROGRAMACIÓN ORIENTADA A OBJETOS
Accediendo a los miembros de los objetos
• Asignación:
miobjetoA . Numero2 = 50;

Nombre
Selección Miembro Operación
del objeto

• Lectura:
miVariable = miobjetoA.Numero2;
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicio

• Utilizando POO hacer programa para solucionar el área de un círculo:


Fórmula=pi*(r*r)

• Debes declarar la clase Circle y heredarla en un objeto llamado circulo,

• Dentro de la clase debes declarar el constructor correspondiente y un


método que calcule el área del circulo regresando el valor correspondiente
a la rutina principal y desplegarlo allí.
PROGRAMACIÓN ORIENTADA A OBJETOS
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)
PROGRAMACIÓN ORIENTADA A OBJETOS
La referencia this
• Para hacer referencia (explícita) a un elemento que se encuentra dentro de la misma clase (ésta)
se utiliza “this”.
class Articulo {
private double precio;
public void Articulo() {
precio = 0;
}
public void setPrecio (double precio ){
this.precio = precio;
}
public double getPrecio() {
return this.precio;
}
}// fin de la clase
PROGRAMACIÓN ORIENTADA A OBJETOS
La referencia this…
class Programa {
static void Main() {
double precio=0;
Articulo art = new Articulo();
art.setPrecio(34.00);
precio=art.getPrecio();
Console.WriteLine(precio);
Console.ReadLine();
}
}// fin de la clase
PROGRAMACIÓN ORIENTADA A OBJETOS
Codificación de la referencia this

class Persona {
private string nombre;
private int edad;
public void ModificarDatos(string nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Sobrecarga
• Se refiere a la posibilidad de crear métodos que posean el mismo nombre y
difieran en la cantidad y/o tipo de parámetros (firma).
• No es posible crear 2 funciones con el mismo identificador que solo difieran
en el tipo de dato devuelto (misma firma).

static bool impresion(int num)


Error (misma firma)
static char impresion(int num)
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejemplo de Sobrecarga
class Impresion {
public void Imprimir() {
Console.WriteLine("Sistema de Usuarios");
}
public void Imprimir(string mensaje){
Console.WriteLine(mensaje);
}
public void Imprimir (string titulo, string mensaje) {
Console.WriteLine("===== " + titulo + " =====");
Console.WriteLine(mensaje);
}
}// fin de la clase
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejemplo de Sobrecarga…
class Programa {
static void Main() {
Impresion im = new Impresion ();
im.Imprimir();
im.Imprimir("Siga las instrucciones en pantalla",
"Use minusculas");
im.Imprimir(" Gracias! ");
Console.ReadLine();
}
}// fin de la clase
PROGRAMACIÓN ORIENTADA A OBJETOS
Método constructor

• Método especial que es invocado automáticamente cada vez que un objeto


nuevo es creado (new).
• Debe poseer el mismo nombre de la clase.
• No posee tipo de dato de retorno.
• Si la clase no posee un constructor, C# crea uno vacío por default.
PROGRAMACIÓN ORIENTADA A OBJETOS
¿Qué es un constructor?
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejemplo:
class Persona { class Programa {
public string Nombre; static void Main() {
public Persona() { Persona unaPersona = new
Persona();
Nombre = "Desconocido";
Console.WriteLine(
}
} unaPersona.Nombre);
Console.ReadLine();
}
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Constructor con parámetros
class Persona { class Programa {
public string Nombre; static void Main() {
public Persona(string Nombre) { Persona otraPersona = new
this.Nombre = Nombre; Persona("Ramóan");
} Console.WriteLine(
} otraPersona.Nombre);
Console.ReadLine();
}
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicio: basándose en los dos ejemplos anteriores realice un
programa utilizando métodos constructores sobrecargados, deben
ser al menos dos métodos, y también debe realizar las funciones
get() y set() correspondientes el atributo Nombre.
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicio: Utilizando POO hacer un programa que solucione el problema de una
gasolinera, sus bombas surten la gasolina en galones pero la cobran en litros,
mostrar en pantalla cuanto se debe cobrar dependiendo de la cantidad de
galones vendidos y el precio de la gasolina (precio variable), un galón equivale a
3.785 litros.
• Debe declarar los constructores que se requieran
• Debe utilizar dos clases, una para realizar los cálculos y otra para capturar valor
inicial y mostrar resultados.
• En la clase que realiza cálculos las variables deben ser privadas por lo que debe
tener tantos métodos get() y set() sean necesarios.
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica:
• Utilizando POO hacer programa que convierta los datos de una persona, su
peso en libras y su estatura en pies (medidas americanas) a su peso a kilos y
su estatura a metros (medidas métrico-decimales):
1 libra equivale a 0.4536 kilos
1 pie equivale a 0.3047 metros

• Los valores en pies y libras debe capturarlos en la rutina main.


• En la clase adicional debe hacer un método por cada conversión y
devuelvan los valores a la rutina main donde deben ser desplegados.
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicio: Utilizando POO: En un almacén se hace un 20% de descuento a los
clientes cuya compra supere los $1000. ¿Cuál será la cantidad que pagará
una persona por su compra?
PROGRAMACIÓN ORIENTADA A OBJETOS
Método destructor

• No puede llamarse explícitamente.


• Se invoca automáticamente cuando el objeto es destruido.
• Invocado por el Garbage Collector (GC) justo antes de desasignar la memoria
del objeto.
• Usado para cerrar archivos, conexiones de red, canales abiertos, etc.
• Sintaxis similar al método constructor, pero anteponiendo una tilde (~) al
nombre.
PROGRAMACIÓN ORIENTADA A OBJETOS
¿Qué es un destructor?
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejemplo de un destructor

class Empleado {
~Empleado() {
Console.WriteLine("Se ha destruido el Empleado ");
Console.ReadLine();
}
}

Al ejercicio anterior agregue un destructor (diapositiva 38).


PROGRAMACIÓN ORIENTADA A OBJETOS
Destrucción de objetos
• C# gestiona la memoria de modo automático mediante el “recolector de
basura” (Garbage Collector o GC), quien se encarga de eliminar la memoria
que en algún momento se solicitó y no se ocupa mas.
• En C# no existe el operador contrario a “new”.
• Por lo que, de manera general, NO es posible controlar exactamente el
momento en el cual la memoria vuelve a estar disponible.
• Se puede indicar en el programa cuando un objeto deja de ser util,
asignándole el valor “null”:miObjeto = null;
• Cuando el GC lo note tomará cartas en el asunto.
• El instante preciso en que el objeto sea destruido queda fuera del alcance
del programador.
PROGRAMACIÓN ORIENTADA A OBJETOS
El Garbage Collector (GC recolector de basura):
Se asegura que:
• Los objetos son destruidos una sola vez.
• Se destruyan objetos que ya no son utilizados.

Trabaja cuando:
• Hay poca memoria disponible.
• La aplicación está finalizando.
• El programador lo invoca manualmente (NO recomendado):
System.GC.Collect();
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica:
• Utilizando POO diseñe una clase para un rectángulo, añada los métodos
necesarios (un método por fórmula) para obtener:
❑ El área:
A=a*b
❑ El perímetro:
P = 2(a + b)
❑ La diagonal:
d = √(a2 - b2)
❑ El radio de la circunferencia circunscrita:
R = √(a2 - b2)/2
PROGRAMACIÓN ORIENTADA A OBJETOS
Operadores Relacionales Operadores Lógicos

> Mayor que && AND (Y)


< Menor que || OR (O)
>= Mayor o igual que ! NOT (NO)
<= Menor o igual que
== Igual
!= Diferente
PROGRAMACIÓN ORIENTADA A OBJETOS
Decisiones (if)

if (condicion)
{
//Qué pasa si la condición es Verdadera
}
else
{
//Qué pasa si la condición es Falsa
}
La Decisión puede ser SIN PARTE FALSA
PROGRAMACIÓN ORIENTADA A OBJETOS
Selección Múltiple
int variable = 1;
switch (variable)
{
case 1: Console.WriteLine(“1”);
break;
case 2: Console.WriteLine(“2”);
break;
case 3: Console.WriteLine(“3”);
break;
default: Console.WriteLine(“Otro”);
break;
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Ciclo for() { }

for (x=inicio; x<=fin ; x=x+incremento )


{
//cuerpo del ciclo…
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Ciclo while { }

while ( condicion )
{
//cuerpo del ciclo…
}
PROGRAMACIÓN ORIENTADA A OBJETOS
Ciclo do { } while( )

do
{
//cuerpo del ciclo…
} while ( condicion );
PROGRAMACIÓN ORIENTADA A OBJETOS
Namespace

• Organizan los diferentes componentes


• Un programa puede contener varios namespaces
• Un namespace puede contenermuchas clases
• El programador puede crear sus propiosnamespaces
• Para accesar a namespaces se usa la directiva using:
using System;
using System.Array;
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica:

• Hacer un programa que capture un base y altura de un triángulo y


despliegue un menú básico con las siguientes opciones:

1) Área del Triángulo


2) Perímetro del Triángulo
3) Superficie del Triángulo

• Si el número capturado es distinto a los mencionados el programa termina.


PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicios con ciclos y condiciones

• Utilizando POO escribe un programa que capture un número en la rutina


principal y por medio de un método de la clase calcule la tabla de
multiplicar de ese número desde el 1 hasta el 10.
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica:

• Utilizando POO escribe un programa que capture un número en la rutina


principal y por medio de un método en clase calcule el factorial de un
número entero
PROGRAMACIÓN ORIENTADA A OBJETOS
Sobrecarga de métodos
• Un método sobrecargado se utiliza para reutilizar el nombre de un método
pero con diferentes argumentos (opcionalmente un tipo diferente de
retorno).

Las reglas para sobrecargar un método son las siguientes:


• Los métodos sobrecargados deben de cambiar la lista de argumentos.
• Pueden cambiar el tipo de retorno.
• Pueden cambiar el modificador de acceso.
• Pueden declarar nuevas o más amplias excepciones.
• Un método puede ser sobrecargado en la misma clase o en una subclase.
PROGRAMACIÓN ORIENTADA A OBJETOS

Ejercicio de sobrecarga

• Utilizando POO desarrolla un programa que capture un número en a rutina


principal y calcule el valor absoluto del mismo dentro de una clase, este
puede ser int, short, o long.
• Debes crear un método sobrecargado por cada tipo de dato que regrese el
resultado a la rutina principal.
PROGRAMACIÓN ORIENTADA A OBJETOS

Práctica de sobrecarga

• Escribe un programa que realice la suma de dos números utilizando


sobrecarga de la siguiente forma:
• Sumar entero y entero: retorna entero;
• Sumar flotante y flotante: retorna flotante;
• Sumar flotante y entero: retorna flotante;
• Sumar entero y flotante: retorna flotante;
PROGRAMACIÓN ORIENTADA A OBJETOS
Evidencia de la unidad
• Con las técnicas que hemos visto hasta ahora escribe un programa que
calcule el impuesto a pagar por importación en una aduana bajo las
siguientes condiciones:
• El artículo puede ser nuevo o usado.
• Los artículos nuevos pagan IEPS que consiste en 10% del valor
• Los artículos usados no pagan IEPS
• Los artículos que provienen de USA y CAN no pagan Impuesto General a
la Importación (IGE)
• Los artículos que provienen de cualquier otro país pagan 5% de IGE
• Todos los artículos pagan IVA
• Al final desplegar el total por impuesto y el total general de impuestos,
así como el valor total de las mercancías importadas.
PROGRAMACIÓN ORIENTADA A OBJETOS
• Debes realizar tantas clases sean necesarias.
• Los atributos locales en las clases deben ser privados.
• Debes crear tantos constructores y destructores se requieran.
• La clase Program solo puede capturar valores e imprimir resultados, pero no
realizar cálculos.

También podría gustarte