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