DiapositivaTema1

Transcripción

DiapositivaTema1
Tema 1: Introducción a la
Programación Orientada a
Introducción.
Objetos.
INTRODUCCION
➔
POO
Objetivos:
Conocer los conceptos básicos
relacionados a la programación
orientada objetos y el porqué de la
importancia en el uso de este tipo
de programación.
Ing.Eddy Ruiz
➔
Clases y Objetos
➔
Instancias de Clases
➔
Herencia
➔
Encapsulación
➔
Polimorfismo
➔
Sobrecarga
➔
Atributos
POO
La programacion Orientada a Objetos (POO) es
un modelo de programacion que utiliza
objetos,ligado mediante mensajes, para la
solucion de problemas .la idea central es
simple:organizar los programas a imagen y
semejanza de la organización de los Objetos del
mundo real.
INTRODUCCION
Pensar en objetos
●
●
INTRODUCCION
OBJETO CARRRO.
Un programa visto desde la programación
tradicional lo ve como si fuera un conjunto de
instrucciones
Visto desde La POO :ve un programa como a
un conjuntos de objetos que dialogan entre si
para realizar las distintas tareas para las
cuales fueron escrito
Atributos
---------------------Color:Blanco
Año:2006
Trans:Automatico
Encapsulados
-----------------------Cauchos
Chasis
Motor
Funcione/Métodos
--------------------------Encendido
Aceleraron
Apagado
INTRODUCCION
Mecanismos básicos de la POO
●
●
●
●
Mensajes->Es el llamado a un método para
modificar el estado del objeto.
Clase->Describe los métodos y atributos que
definen las características comunes a todos
los objetos de esa clase.
Subclase->es una clase que hereda los
atributos y métodos de una clase padre.
Ejemplo:Entidad Bancaria Cuenta del
cliente
●
●
●
Características de la POO
●
Objetos->Contiene Datos y
procedimientos(Funciones),para manipularlos
INTRODUCCION
●
INTRODUCCION
Cuenta puede verse como un Objeto.
Nombre,Numero de cuenta y saldo,Serian sus
Atributos
IngresarDinero,RetirarDinero,AbonarInterese,S
aldoActual.etc, Actuan como una serie de
metodos para su correcto funcionamiento
Cuenta01.SaldoActual();
●
●
●
Abstracción:“acción de separar
mentalmente”“generalización conceptual de los atributos y
propiedades de un conjunto de objetos”(concepto de
clase).
Encapsulamiento:Ocultamiento de información,(concepto
de datos miembros de una clase ).es un mecanismo que
permite a los diseñadores de tipos de datos determinar
qué miembros de los tipos creen pueden ser utilizados por
otros programadores y cuáles no
Herencia:Compartición de métodos y atributos entre
clase y subclases, reutilización de código
Polimorfismo:Implementación de múltiples forma de usar
un mismo método.
INTRODUCCION
C# es un lenguaje de Orientado a objetos
puro, lo que significa que todo con lo que
vamos a trabajar en este lenguaje son
objetos. Un objeto es un agregado de datos y
de métodos que permiten manipular dichos
datos, y un programa en C# no es mas que un
conjuntos de objetos que interaccionan unos
con otros a través de sus métodos
CLASE Y OBJETOS
CLASE:
La clase es el elemento fundamental de la programación orientada a
objetos con el lenguaje C#. Aunque, dentro de este modelo de
programación, existen muchas válidas para el concepto de clase, en
la práctica una clase no es más que una plantilla de software que
sirve para construir cualquier cantidad de objetos. Por ejemplo,
en .NET existe una clase llamada Form que sirve como molde para
construir cualquier ventana que necesite una aplicación tipo Windows.
class NombreClase
{
// Miembros
}
CLASES Y OBJETOS
Un objeto es una unidad que contiene datos y
las funciones que operan sobre esos datos. A
los elementos de un objeto se les conoce como
miembros; las funciones que operan sobre los
objetos se denominan métodos y los datos se
denominan miembros datos
CLASES Y OBJETOS
Elementos de una calse:
En la teoría general de programación orientada a objetos, las clases están conformadas
por miembros, los cuales se clasifican básicamente en atributos y métodos. En vista de
la complejidad que han ido adquiriendo los programas de computador y las
posibilidades que los lenguajes de programación tratan de poner a disposición del
programador, también ha sido necesario realizar una clasificación más detallada de los
miembros que componen a una clase. Para realizar una identificación más precisa de
los elementos de una clase en C# estos miembros los podemos considerar clasificados
en:
●
Constructores
●
Destructores
●
Constantes
●
Campos
●
Métodos
●
Propiedades
●
●
●
●
●
Indizadores
Operadores
Eventos
Delegados
Estructuras
CLASE Y OBJETOS
OBJETOS:.
Cuando se diseña y programa una aplicación de software con el
modelo de programación orientada a objetos, lo que se hace en la
práctica es construir un conjunto de plantillas de objetos, o lo que se
conoce como clases, las cuales permiten definir variables en memoria
que se conocen con el nombre de objetos o instancias de clase.
Desde esta perspectiva, el término clase gana mayor significado, ya
que se puede definir como una plantilla que permite generar una clase
de objetos.
NombreClase Objeto;
INSTACIA DE CLASES
Para crear un objeto de una determinada clase, se procede básicamente en
dos pasos:primero se declara una variable con el tipo que representa la clase
y luego se le asigna memoria con el operador new.
NombreClase Objeto;
Objeto = new NombreClase();
En C# esto tambien puede realizarce en una sola linea
NombreClase Objeto =new NombreClase();
El termino instacia de Clases ,quiere decir que en el sentido de que una
instancia es la representacion concreta y espesifica de una clase.
Ejemplo:
Ejemplo de crear un objeto
using System;
// Asignar memoria a los objetos
class Complejo
p = new Complejo();
{
q = new Complejo();
// Campos
// Cargar los datos del número complejo p
public double real;
p.real = 4;
public double imaginario;
p.imaginario = 10;
}
// Cargar los datos del número complejo q
public class NumerosComplejos
q.real = -4;
{
q.imaginario = 1;
static void Main()
{
// Mostrar los números complejos p y q
// Declarar dos objeto
Console.WriteLine("p = {0} + {1}i", p.real, p.imag
p y q de la clase Complejo
Console.WriteLine("q = {0} + {1}i", q.real, q.imag
Complejo p;
}
Complejo q;
}
Class Ccuenta
{
///Datos mienbros,metodos de la clase Ccuenta.
}
Ccuenta cuenta01=new Ccuenta();//cuenta01 es un instacia de la clase
CCuenta
HERENCIA
La herencia es la característica más
importante de la programación orientada a
objetos por que permite crear clases que se
derivan de otras clases y este es uno de los
aspectos vitales en la reutilización de
componentes.
Específicamente, la herencia es la capacidad
que ofrece un lenguaje de programación de
poder crear nuevas clases a partir de clases
existentes, aprovechando el código de estas
últimas. La herencia supone la existencia de
una clase base y una o más clases derivadas.
Herencia Modificadores
●
Abstract->Se puede utilizar en clase,métodos
,propiedades,indizadores,eventos,pero si se utiliza en la declaración
de clase quiere decir que esa clase solo se utilizara como clase base
de otras clases.
●
Override->Nos proporciona una nueva implementación de un
método heredado de la clase base.
●
Virtual->declarar métodos,propiedades, evento , indezarores,o
eventoslo cuales puede cambiar su implementación dentro de clase
derivada.
●
New->Ocultar un mienbro heredado en la clase base
HERENCIA
HERENCIA
TIPOS DE HERENCIA
●
HERENCIA
Dentro de la programación orientada a objetos
existen dos tipos de herencia: simple y
múltiple. Existe herencia simple cuando una
clase solo se deriva de una clase base; y
herencia múltiple cuando una clase se deriva
de dos o más clases base.C# solo permite
herencia Simple.
HERENCIA
Ejemplo de herencia
Múltiple
Para especificar en C#, que una clase hereda de otra se la define
escribiendo su nombre seguido de dos puntos y el nombre de la
clase que sirve de base para la herencia. La siguiente es la
sintaxis que se debe manejar:
class ClaseDerivada : ClaseBase
{
// Implementación de la clase derivada
}
ENCAPSULAMIENTO
Herencia. Tipo de derivación
Tipo de derivación
Miembros Clase Base
Miembros Clase
Derivada
private
public
Protected
private
private
private
Inaccesible
Protected
Public
Protected
private
protected
protected
Inaccesible
public
public
protected
private
public
protected
Inaccesible
Mediante la encapsulacion. Los datos se ocultan,o se
encapsulam,dentro de una clase y la clase implementa un
diseño que permite que otras partes del código accedan a esos
datos de forma eficiente. Imagine la encapsulacion como un
envoltorio protector que rodea a los datos en C#
●
➢
Principio que establece que los atributos propios de un objeto
no deben ser visibles desde otros objetos.Deben ser
declarados como privados
Por qué es útil?
Punto de Control/Validación
Mejor respuesta ante los Cambios
OJO!!. Los mienbros privados de la clase base son inaccesible en la clase
derivada en todos los tipos de derivacion
ENCAPSULAMIENTO
EJEMPLO:
Class Racional {
friend Racional& operator+( Racional, Racional );
// ...
private:
int numerador;
int denominador;
// ...
void simplificaFraccion();
// ...
public:
// ...
void estableceNumerador( int );
void estableceDenominador( int );
// ...
};
POLIMORFISMO
El polimorfismo como el tercer pilar de la programación orientada a
objetos, tras la encapsulacion y la herencia. El termino polimorfismo
es una palabra griega que significa “muchas formas” y tiene dos
aspectos que lo caracterizan:
(1)En tiempo de ejecución ,los objetos de una clase derivada se
pueden tratar como objetos de una clase base en lugares como
parametros de metodos y colecciones o matrices. Cuando esto
sucede ,el tipo declarado del objeto ya no es idéntico a su tipo en
tiempo de ejecucion
(2)Las clases base pueden definir e implementar métodos virtuales
y las clases derivadas pueden invalidarlos, lo que significa que
proporcionan su propia definición e implementación. En tiempo de
ejecución, cuando el código de cliente llama al método, CLR
busca el tipo en tiempo de ejecución del objeto e invoca esta
invalidación del método virtual. Así, en el código fuente puede
llamar a un método de una clase base y provocar la ejecución de
la versión de clase derivada del método.
POLIMORFISMO
El polimorfismo se puede establecer mediante
la sobrecarga de identificadores y operadores,
la ligadura dinámica y las funciones virtuales.
El término sobrecarga se refiere al uso del
mismo identificador u operador en distintos
contextos y con distintos significados.
●
Hay 3 tipos de polimorfismo
●
Polimorfismo de sobrecarga.
●
●
POLIMORFISMO
Polimorfismo parametrico.(Tambien llamado
polimorfismo de plantillas)
Polimorfismo de inclusión.(Tambien llamado
redifinicion o subtipado)
POLIMORFISMO
public class Shape
{
// A few example members
public int X { get; private set; }
public int Y { get; private set; }
public int Height { get; set; }
public int Width { get; set; }
// Virtual method
public virtual void Draw()
{
Console.WriteLine("Realización de tareas de dibujo de la clase base");
}
}
class Circle : Shape
{
public override void Draw()
{
// Code to draw a circle...
Console.WriteLine("Dibujar un círculo");
base.Draw();
}
}
POLIMORFISMO
class Rectangle : Shape
{
public override void Draw()
{
// Code to draw a rectangle...
Console.WriteLine("Dibujar como un rectangulo");
base.Draw();
}
}
class Triangle : Shape
{
public override void Draw()
{
// Code to draw a triangle...
Console.WriteLine("Dibujar como un triangulo");
base.Draw();
}
}
Class Program
{
POLIMORFISMO
static void Main(string[] args)
{
/ / El polimorfismo en el trabajo # 1: un rectángulo, triángulo y círculo
/ / Todos se puede utilizar donde quiera que se espera de una figura.
//No elenco es
/ / Necesario porque existe una conversión implícita de un derivado
/ / Clase de su clase base.
System.Collections.Generic.List<Shape> shapes =
new System.Collections.Generic.List<Shape>();
shapes.Add(new Rectangle());
shapes.Add(new Triangle());
shapes.Add(new Circle());
Métodos Virtuales
Los métodos virtuales permiten trabajar con un
grupo de objetos relacionado de una manera
uniforme.
Se declaro colocando la palabra reservada
virtual
/ / El polimorfismo en el trabajo # 2: el método Draw virtual
/ / Se invoca en cada una de las clases derivadas, no la clase base.
foreach (Shape s in shapes)
{
Nota:En C#, cada tipo es
polimórfico porque todos los
s.Draw();
tipos,incluidos
los
tipos
}
definidos por el usuario,
heredan de Object.
}
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
Sobrecarga
La sobrecarga Consiste en dar distintos significados a un
mismo método u operador.
●
C# soporta la sobrecarga de métodos y de operadores. Uno de
los ejemplos mas claros es el del operador (+).
Sin embargo, lo realmente interesante es poder redefinir
operadores cuyos operandos sean de tipos definidos por el
usuario, y C# permite hacer esto. Pero conviene tener en
cuenta que este tipo de actuaci ́ n s ́ lo es provechosa en
aquellos o ocasos en los que existe una notaci ́ n
ampliamente usada que conforme con nuestra sobrecarga
o(m ́ s a ́ n, si cabe, en el caso de los operadores
relacionales <, >, <= y >=).
Sobrecarga de métodos
La sobrecarga de métodos consiste en poner varios
métodos con el mismo nombre en la misma clase, pero
siempre que su lista de argumentos sea distinta. Ojo,
repito, siempre que su lista de argumentos sea distinta,
es decir, no puede haber dos métodos que se llamen
igual con la misma lista de argumentos, aunque
devuelvan datos de distinto tipo. El compilador sabría a
cuál de todas las sobrecargas nos referimos por los
argumentos que se le pasen en la llamada, pero no
sería capaz de determinar cuál de ellas debe ejecutar
si tienen la misma lista de argumentos.
Sobrecarga de metodos.
●
Sobrecarga de metodos
public class Calculadora {
public int sumar(int x, int y) {
System.out.println("Método1:");
return x + y;
}
public float sumar(float x, float y) {
System.out.println("Método2:");
return x + y;
}
public float sumar(int x, float y) {
System.out.println("Método3:");
return x + y;
}
}
public bool NuevoIngreso(single cant)
{...}
●
public int NuevoIngreso(double cantidad,
double argumento2)
{...}
●
public int NuevoIngreso(single cantidad, double
argumento2)
{...}
Sobrecarga de operadores
La sobrecarga de operadores permite, por otro
lado, el desarrollo de un código más coherente,
como especialización de la sobrecarga de
funciones, posibilitando la re-definición (para
tipos de datos definidos-por-el-usuario) de las
operaciones realizadas por éstos (+, -, *, >,
etc.). Esto es, ocurre lo mismo que en la
sobrecarga de funciones, pero aquí, en vez de
identificadores de funciones, tenemos
operadores.
Sobrecarga de operadores
La lista completa de operadores que se pueden
sobrecargar es la siguiente:
●
●
Operadores unarios: +, -, !, ~, ++, --, true, false
Operadores binarios: +, -, *, /, %, &, |, ^, <<, >>,
==, !=, >, <, >=, <=
Sobrecarga de operadores
Sobrecarga de operadores
public class ComplexNumber
{
private int real;
private int imaginary;
public ComplexNumber() : this(0, 0) // constructor
{
}
public ComplexNumber(int r, int i) // constructor
{
real = r;
imaginary = i;
}
// Override ToString() to display a complex number in the traditional format:
public override string ToString()
{
return(System.String.Format("{0} + {1}i", real, imaginary));
}
// Overloading '+' operator:
public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real + b.real, a.imaginary + b.imaginary);
}
// Overloading '-' operator:
public static ComplexNumber operator-(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real - b.real, a.imaginary - b.imaginary);
}
}
class TestComplexNumber
{
static void Main()
{
ComplexNumber a = new ComplexNumber(10, 12);
ComplexNumber b = new ComplexNumber(8, 9);
System.Console.WriteLine("Complex Number a = {0}", a.ToString());
System.Console.WriteLine("Complex Number b = {0}", b.ToString());
ComplexNumber sum = a + b;
System.Console.WriteLine("Complex Number sum = {0}", sum.ToString());
ComplexNumber difference = a - b;
System.Console.WriteLine("Complex Number difference = {0}",
difference.ToString());
}
}
Atributos en POO
Atributos en POO
namespace atributos
{
●
●
●
●
●
Una clase puede tener como atributos:
class Persona
variables definidas de cualquier tipo:
(int,float,bool,etc..)
{/*Esta parte de la clase solo puede hacerse
asignaciones no se puede realizar operaciones sobre las
operaciones de los atributos que hemos definidos*/
Tambien puede definirce como atributos
string nombre=”Alez”;
arreglos,(int [] notas={5,4,4});
int edad=24;
Se pueden definir como atributos otra clase .
int[] notas={5,4,5};
Curso micurso;
Curso micurso;
Y los demas objetos que tiene c#
}
}
Bibliografia
●
La biblia de C# Francisco Javier ceballos

Documentos relacionados