Sunteți pe pagina 1din 17

Introduccin a la Programacin Orientada a Objetos

Introduccin Emprender un proyecto de desarrollo de software, es un reto que nos lleva a pensar en la elaboracin de un producto final que cumpla con las caractersticas de un software exitoso: Solido, robusto, confiable, escalable, interoperable y lo mejor de todo para quienes estamos desarrollando esgenerar cdigo que pueda ser reutilizado. Bajo esta premisa surge la necesidad de trabajar con una filosofa de programacin orientada a objetos. Ahora bien, en este momento se preguntaran, una filosofa?, la respuesta es sencilla, antes de aprender a programar en un lenguaje orientado a objeto como C# o Vb.net, es importante aprender a pensar, bajo un modelo de desarrollo, con su teora y su metodologa, como lo es la programacin orientada a objetos, para encontrar una solucin a un problema que se plantee. Conceptos Fundamentales Clase: Vamos a iniciar este concepto con un ejemplo: Para construir un modelo de automvil se deben haber plasmado una serie de caractersticas y funcionalidades que estarn guiando la construccin del mismo. Cada vez que se procede a crear este mismo modelo de auto, se deber cumplir con las caractersticas y funcionalidades predefinidas. En programacin orientada a objeto, una clase define las caractersticas y comportamientos comunes de los objetos, en otras palabras la clase es el molde para la creacin de los mismos. Para nuestro ejemplo,un plano del modelo del auto es el smil de la clase auto. Aunque la clase especifica las caractersticas propias del objeto cada implementacin es nica tal como sucede en el mundo real pues el valor de sus atributos puede variar, por ejemplo el color, kilmetros recorridos, etc. Objeto: Los objetos tienen caractersticas y comportamientos que estn definidas de la clase de donde se instancian, sin embargo, aunque varios objetos provengan de una clase pueden tener identidad propia; en otras palabras: La identidad es el valor o estado de la propiedad que permite a un objeto diferenciarse de otros. En programacin orientada a objetos cada Auto se conocer como una instancia de la clase Auto.

Pilares de la Programacin Orientada a Objetos Es importante entender los cuatro pilares de la programacin orientada a objetos: abstraccin, encapsulacin, herencia y polimorfismo. Abstraccin: Como se explico anteriormente, los objetos tienen atributos o caractersticas que representan los datos asociados al mismo, estos atributos y sus valores en un momento dado, determinan el estado de un objeto. De igual forma los objetos tienen funcionalidades o comportamientos llamados mtodos en la programacin orientada a

objetos. Con estos mtodos accedemos a los atributos de una manera predefinida y se implementan el comportamiento del objeto. Cuando desarrollemos un software, crearemos muchos objetos, que en algn momento vamos a requerir para resolver una situacin planteada. Es aqu donde entra el concepto de abstraccin. Con la abstraccin podremos tomar lo que hace falta de un objeto del mundo real para el sistema en un momento dado, es captar las caractersticas esenciales de un objeto, as como su comportamiento. Veamos como lo aplicamos a un ejemplo. En un taller mecnico se desea registrar los automviles que ingresan al mismo. Es decir que vamos a tomar para registro de ingreso Marca, Modelo, Ao, Cliente, Rif, Direccin Fiscal, telfono del cliente. En este Caso tomamos del objeto automvil solo los datos que necesitamos Marca, Modelo y Ao. Del Objeto Cliente, el cliente su RIF, direccin fiscal y telfono. Encapsulamiento El objetivo es meter todo en una capsula, juntar las piezas que hacen que funcione como un todo. Ejemplo meto el motor dentro del auto. Polimorfismo Lograr que un objeto se comporte como si fuese una implementacin de otra clase. Ejemplo: Un carro comportndose como una gra. Herencia Tomar caractersticas y funcionalidades definidas en otras clases. Ejemplo: Auto hereda de vehculo motorizado. Como gra tambin hereda de vehculo automotor. Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.

Ejemplo de Clase
Como haba comentado en un post anterior, en programacin orientada a objeto, una clase define las caractersticas y comportamientos comunes de los objetos, en otras palabras la clase es el molde para la creacin de los mismos. En las Prximas lneas les presento un ejemplo de la Clase Alumno en .net La clase alumno es una abstraccin con los atributos, comportamientos bases para nuestro sistema. using System; using Noixno.Common; namespace MVAEscuela.Core.BE { [Serializable] public partial class Alumno : Persona //Herencia

{ #region Private fields, to hold the state of the Alumno entity private int m_IdAlumno; private DateTime m_FechaDeNacimiento; #endregion #region Public properties, to expose the state of the entity public int IdAlumno { get { return m_IdAlumno; } set { m_IdAlumno = value; IsModified = true; } } public DateTime FechaDeNacimiento { get { return m_FechaDeNacimiento; } set { m_FechaDeNacimiento = value; IsModified = true; } } #endregion } }

Ejemplo de Herencia
En el ejemplo que se muestra para la definicin de la Clase Instructor se toman caractersticas y funcionalidades definidas en otra clase denominada Persona. Las

clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Esto se conoce como herencia. using System; using Noixno.Common; namespace MVAEscuela.Core.BE { [Serializable] public partial class Instructor : Persona //Herencia { #region Private fields, to hold the state of the Instructor entity private int m_IdInstructor; private DateTime m_FechaIngreso; #endregion #region Public properties, to expose the state of the entity public int IdInstructor { get { return m_IdInstructor; } set { m_IdInstructor = value; IsModified = true; } } public DateTime FechaIngreso { get { return m_FechaIngreso; } set { m_FechaIngreso = value; IsModified = true; } } #endregion } }

Ejemplo Polimorfismo

En los ejemplos anteriores pudimos analizar las Clases Alumno e Instructor. En este ejemplo veremos que se desarrollo un formulario para enviar notificaciones. En este caso tanto alumno como instructor se comportaran como persona. Esto es lo que se conoce como Polimorfismo. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Net.Mail; using MVAEscuela.Core.BE; using MVAEscuela.Core.BLL; public partial class Notificacion : System.Web.UI.Page { Alumno_BLL m_Alumno_BLL = new Alumno_BLL(); Instructor_BLL m_Instructor_BLL = new Instructor_BLL(); protected void Page_Load(object sender, EventArgs e) { } protected void Done_Click(object sender, ImageClickEventArgs e) { if (chkAlumnos.Checked) { Noixno.Common.CommonList<Instructor> Instructores = m_Instructor_BLL.GetAll(null); foreach (Instructor instructor in Instructores) { Notificar(instructor); } } if (chkInstructor.Checked) { Noixno.Common.CommonList<Alumno> Alumnos = m_Alumno_BLL.GetAll(null); foreach (Alumno alumno in Alumnos) { Notificar(alumno); } } } //Polimorfismo ya quede recibir un instructor o un alummo ya que ambos heredan de persona protected void Notificar(Persona persona) { string Cuerpo = @"<HTML><body><table border =1><tr><td>Estimado: " + persona.Nombre + "</td></tr> <tr><td>Estimado: " + Notificacion.Text + "</td></tr>

</table></body></HTML>"; MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); mail.From = new MailAddress("server@noixnogroup.com"); mail.To.Add(persona.CorreoElectronico); mail.Subject = " Notificacion :: MVA Escuela"; mail.IsBodyHtml = true; mail.Priority = MailPriority.High; mail.Body = Cuerpo; SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential("Server@noixnogroup.com", "AmericaA00*"); SmtpServer.EnableSsl = true; try { SmtpServer.Send(mail); } catch (SmtpException ex) { info.Text = ex.Message; } catch (Exception ex) { info.Text = ex.Message; } } }

Ejemplo Introduccion a la Programacion Orientada a Objeto en .NET


Con la finalidad de entender todos los conceptos explicados en este blog sobre Introduccin a la Programacin Orientada a Objetos se les coloca a continuacin un link con el cdigo completo de un programa para hacerle tanto mantenimiento a las tablas de Alumnos e Instructores, como ejecutar el envo de notificaciones a ambos. La estructura del programa cumple con el modelo en capas donde se separan claramente las entidades de negocio, las reglas, las capas de persistencia, presentacin. Para finalizar la grafica del Diagrama de Componente para este ejemplo:

Notacin Bsica UML


Inicialmente visualizaremos como representar grficamente los conceptos principales de la orientacin a objetos.

Modelos Tenemos varias perspectivas a la hora de representar un desarrollo de software, en otras palabras cada desarrollo al que nos enfrentemos podramos analizarlo desde diversos ngulos, que hace que detectemos en los diversos aspectos del sistema. Con los modelos podremos representar las diversas perspectivas desde donde estaramos evaluando el desarrollo del software. Los modelos de UML que trataremos son:

Diagrama de Estructura Esttica Diagrama de Caso de Uso Diagrama de Secuencia Diagrama de Colaboracin Diagrama de Estados

Elementos Comunes en los Diagramas. Notas: Normalmente cuanto estamos construyendo un diagrama, surge informacin que nos puede ayudar a complementar el proceso o lo que estamos tratando de plasmar en el diagrama, informacin que se requiere en formato libre, informacin que denominamos comentario y que dentro de la estructura del diagrama no podemos expresarla en forma adecuada. Una nota se representa como un rectngulo con una esquina doblada con texto en su interior. Puede incluirse en un diagrama como una nota sola, o estar unida la nota a un elemento por medio de una lnea descontina. Puede contener restricciones, comentarios, el cuerpo de un procedimiento, etc.

Ejemplo de Nota Dependencias Debemos validar si entre los elementos que componen un diagrama existe alguna dependencia entre ellos, en estos casos hay que tomar en cuenta que al hacer un cambio en el elemento destino puede significar un cambio en el elemento origen. Una dependencia se representa por medio de una lnea discontinua entre los dos elementos, con una flecha que sale del elemento origen y llega al elemento destino.

Notacin Bsica UML. Diagramas de Estructura Esttica


Los diagramas de estructura esttica los utilizaremos en dos fases: 1. Modelo conceptual en la Fase de Anlisis para modelar elementos del dominio. 2. Diagrama de Clases en la Fase de Diseo, para presentar los elementos de la solucin software. En ambos casos se comparte la misma notacin para los elementos que lo forman (clases y objetos) y las relaciones entre ambos (asociaciones) Clases Una clase se representan como un rectngulo dividido en tres partes (tres compartimentos).

En el compartimento superior, centrado, va el nombre de la clase. El segundo compartimento contiene los atributos, en la forma: visibilidad nombreAtributo: tipo El tercer compartimento contiene los mtodos, en la forma: visibilidad nombreMtodo(parmetros): tipoRetorno. Los parmetros van separados por comas y slo se especifica el tipo. Los constructores no tienen tipo de retorno. La visibilidad, de atributos y mtodos, puede ser: privado, + pblico, # protegido, ~ de paquete

Ejemplo:

Objetos Se representa igual a una clase, debemos seguir la siguiente sintaxis nombre del objeto junto con el nombre de la clase subrarrayado. Nombre del objeto: nombre de la clase

Ejemplo Objeto Asociaciones Una asociacin (relacin entre dos clases) se representa como una lnea continua entre dos Clases, y puede tener el nombre de la relacin sobre esta lnea. Ejemplo:

En el ejemplo anterior cada Carro tiene una relacin con Conductor, pero tambin cada Conductor tienerelacin con Carro. Esta es una relacin en ambos sentidos. Para mostrar que la relacin slo tiene un sentido se muestra con una flecha que indica el sentidode la relacin. Ejemplo:

Viaje En este ejemplo un Pasajero conoce el Carro(o carroes) con el cual viaja, pero el Carrono tiene ninguna relacin con los Pasajeros. Multiplicidad Es una restriccin que se pone a una asociacin, que limita el nmero de instancias de una clase que pueden tener esa asociacin con una instancia de la otra clase.

En este caso las relaciones son: - Un chofer tiene relacin con cero o ms autobuses. - Un autobs tiene relacin con uno o dos choferes. - Una terminal de pasajero tiene relacin con cero o muchos autobuses. - Un autobs tiene relacin con un terminal de pasajero.

Roles Para indicar el papel que juega una clase en una asociacin se puede especificar un nombre de rol. Se representa en el extremo de la asociacin junto a la clase que desempea dicho rol. Ejemplo:

Agregacin La agregacin representa el objeto compuesto. Durante el desarrollo de una aplicacin se nos presentara la necesidad de crear objetos complejos que no encajan con los tipos de datos bsicos que proveen los lenguajes: tipo caracteres, enteros, reales, entre otros. El smbolo de agregacin es un diamante colocado en el extremo en el que est la clase que representa el todo. Podemos trabajar con dos tipos de agregacin: Agregacin por Valor y Agregacin por Referencia.

Agregacin por contenido fsico o por valor El contenedor contiene el objeto en s. Cuando creamos un objeto contenedor, se crean tambin automticamente los contenidos. Ejemplo:

Agregacin conceptual o por referencia Se tienen punteros a objetos. No hay un acoplamiento fuerte. Los objetos se crean y se destruyen dinmicamente.

En ambos casos la agregacin se destaca por un rombo transparente.

Herencia Como vimos en la primera entrega, la herencia es tomar caractersticas y funcionalidades definidas en otras clases. Ejemplo: Auto hereda de vehculo motorizado. Como gra tambin hereda de vehculo automotor Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. La relacin de herencia se representa mediante un triangulo en el extremo de la relacin que corresponde a la clase mas general o clase padre. Al plantear una relacin de herencia con varias clases subordinadas, dentro de un diagrama concreto, no se hace necesario colocarlas todas, podemos representar con puntos suspensivos. Ejemplo: Elementos Derivados En algunas ocasiones nos encontramos con la posibilidad de calcular un valor de un elemento a partir de otros elementos presentes en el modelo. Se incluye para dar mayor claridad al diseo. Se representa con una barra / precediendo al nombre del elemento derivado. En ambos casos la agregacin se destaca por un rombo transparente.

Herencia Como vimos en la primera entrega, la herencia es tomar caractersticas y funcionalidades definidas en otras clases. Ejemplo: Auto hereda de vehculo motorizado. Como gra tambin hereda de vehculo automotor Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. La relacin de herencia se representa mediante un triangulo en el extremo de la relacin que corresponde a la clase mas general o clase padre. Al plantear una relacin de herencia con varias clases subordinadas, dentro de un diagrama concreto, no se hace necesario colocarlas todas, podemos representar con puntos suspensivos. Ejemplo:

Elementos Derivados En algunas ocasiones nos encontramos con la posibilidad de calcular un valor de un elemento a partir de otros elementos presentes en el modelo. Se incluye para dar mayor claridad al diseo. Se representa con una barra / precediendo al nombre del elemento derivado.

Notacin Bsica UML. Diagrama de Casos de Uso

Es la representacin grafica de cmo debera interactuar el sistema con el usuario o con otro sistema para conseguir un objetivo especfico. El caso de uso es la representacin grafica de cada proceso desde la perspectiva usuario, lo que se espera del sistema en cuanto a funcionalidad. Elementos 1. Actor: Representa un rol que es llevado a cabo por una persona, otro sistema, sensores, etc. El actor es representado por una figura en forma de persona. Ejemplo:

2. Asociacin de Comunicacin: Este elemento representa la relacin que existe entre un Caso-Uso y un Actor, dicho elemento es representado por una lnea recta que se extiende de la figura del actor hacia el ovalo del caso-uso. 3. Caso-Uso: Un caso de uso es una descripcin de la secuencia de interacciones que se producen entre un actor y el sistema, cuando el actor usa el sistema para llevar a cabo una tarea especfica. Se representa mediante un ovalo. Ejemplo:

4. Relaciones entre Casos de Uso: Entre dos casos de uso puede haber relaciones: 1. Extiende: Cuando un caso de uso especializa a otro extendiendo su funcionalidad. 2. Usa: Cuando un caso de uso utiliza a otro. Se representa como una lnea que une a los dos casos de uso relacionados, con una flecha en forma de triangulo y con una etiqueta extiende o usa segn sea el tipo de relacin. 5. Lmite de Sistema: Empleado para delimitar los lmites del sistema. Se representa por un rectngulo con color de fondo distintivo. Ejemplo:

A continuacin un ejemplo de Diagrama de Caso de uso Saln de Belleza.

Notacin Bsica UML. Diagramas de Interaccin


Estos diagramas muestran el patrn de interaccin entre objetos en un escenario. A continuacin se muestran dos tipos de diagramas de Interaccin: 1. Diagramas de Secuencia 2. Diagramas de Colaboracin. Diagramas de Secuencia: Muestra una interaccin ordenada segn la secuencia temporal de eventos. El diagrama de secuencia muestra la interaccin entre los objetos que tiene lugar a travs del intercambio de mensajes, en particular, muestra los objetos participantes en la interaccin y los mensajes que se intercambian ordenadas segn la secuencia de tiempo. Ejemplo:

Diagrama de Colaboracin Muestra una interaccin organizada basndose en los objetos que toman parte en la interaccin y los enlaces de los mismos, a diferencia de los diagramas de secuencia, los diagramas de colaboracin muestran las relaciones entre los roles de los objetos. La secuencia de los mensajes y los flujos de ejecucin concurrentes deben determinarse explcitamente mediante nmero de secuencia. Ejemplo:

S-ar putea să vă placă și