introducción a la programación orientada a cap2

7
Introducción a la Programación Orientada a Objetos noviembre 24, 2010 Posted by arevalomaria in Introduccion a la Programación. trackback Introducción Emprender un proyecto de desarrollo de software, es un reto que nos lleva a pensar en la elaboración de un producto final que cumpla con las características de un software exitoso: Solido, robusto, confiable, escalable, interoperable y lo mejor de todo para quienes estamos desarrollando esgenerar código que pueda ser reutilizado. Bajo esta premisa surge la necesidad de trabajar con una filosofía de programación orientada a objetos. Ahora bien, en este momento se preguntaran, ¿una filosofía?, 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 teoría y su metodología, como lo es la programación orientada a objetos, para encontrar una solución a un problema que se plantee. Conceptos Fundamentales Clase: Vamos a iniciar este concepto con un ejemplo: Para construir un modelo de automóvil se deben haber plasmado una serie de características y funcionalidades que estarán guiando la construcción del mismo. Cada vez que se procede a crear este mismo modelo de auto, se deberá cumplir con las características y funcionalidades predefinidas. En programación orientada a objeto, una clase define las características y comportamientos comunes de los objetos, en otras palabras la clase es el molde para la creación de los mismos. Para nuestro ejemplo,un plano del modelo del auto es el símil de la clase auto. Aunque la clase especifica las características propias del objeto cada implementación es única tal como sucede en el mundo real pues el valor de sus atributos puede variar, por ejemplo el color, kilómetros recorridos, etc. Objeto: Los objetos tienen características y comportamientos que están 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 programación orientada a objetos cada Auto se conocerá como una instancia de la clase Auto. Pilares de la Programación Orientada a Objetos

Upload: fers-ram

Post on 11-Aug-2015

27 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Introducción a la Programación Orientada a cap2

Introducción a la Programación Orientada a Objetos noviembre 24, 2010

Posted by arevalomaria in Introduccion a la Programación.

trackback

Introducción

Emprender un proyecto de desarrollo de software, es un reto que nos lleva a pensar

en la elaboración de un producto final que cumpla con las características de un

software exitoso: Solido, robusto, confiable, escalable, interoperable y lo mejor de

todo para quienes estamos desarrollando esgenerar código que pueda ser reutilizado.

Bajo esta premisa surge la necesidad de trabajar con una filosofía de programación

orientada a objetos. Ahora bien, en este momento se preguntaran, ¿una filosofía?, 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 teoría y su metodología, como lo es la programación orientada a

objetos, para encontrar una solución a un problema que se plantee.

Conceptos Fundamentales

Clase:

Vamos a iniciar este concepto con un ejemplo: Para construir un modelo de automóvil

se deben haber plasmado una serie de características y funcionalidades que estarán

guiando la construcción del mismo. Cada vez que se procede a crear este mismo

modelo de auto, se deberá cumplir con las características y funcionalidades

predefinidas.

En programación orientada a objeto, una clase define las características y

comportamientos comunes de los objetos, en otras palabras la clase es el molde para

la creación de los mismos. Para nuestro ejemplo,un plano del modelo del auto es el

símil de la clase auto. Aunque la clase especifica las características propias del objeto

cada implementación es única tal como sucede en el mundo real pues el valor de sus

atributos puede variar, por ejemplo el color, kilómetros recorridos, etc.

Objeto:

Los objetos tienen características y comportamientos que están 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 programación

orientada a objetos cada Auto se conocerá como una instancia de la clase Auto.

Pilares de la Programación Orientada a Objetos

Page 2: Introducción a la Programación Orientada a cap2

Es importante entender los cuatro pilares de la programación orientada a objetos:

abstracción, encapsulación, herencia y polimorfismo.

Abstracción:

Como se explico anteriormente, los objetos tienen atributos o características 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 métodos en la programación orientada a

objetos. Con estos métodos accedemos a los atributos de una manera predefinida y

se implementan el comportamiento del objeto.

Cuando desarrollemos un software, crearemos muchos objetos, que en algún

momento vamos a requerir para resolver una situación planteada. Es aquí donde

entra el concepto de abstracción. Con la abstracción podremos tomar lo que hace

falta de un objeto del mundo real para el sistema en un momento dado, es captar las

características esenciales de un objeto, así como su comportamiento.

Veamos como lo aplicamos a un ejemplo. En un taller mecánico se desea registrar los

automóviles que ingresan al mismo. Es decir que vamos a tomar para registro de

ingreso Marca, Modelo, Año, Cliente, Rif, Dirección Fiscal, teléfono del cliente. En este

Caso tomamos del objeto automóvil solo los datos que necesitamos Marca, Modelo y

Año. Del Objeto Cliente, el cliente su RIF, dirección fiscal y teléfono.

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 implementación de otra clase.

Ejemplo: Un carro comportándose como una grúa.

Herencia

Tomar características y funcionalidades definidas en otras clases. Ejemplo: Auto

hereda de vehículo motorizado. Como grúa también hereda de vehículo automotor.

Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía

de clasificación. 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.

Page 3: Introducción a la Programación Orientada a cap2

Como había comentado en un post anterior, en programación orientada a objeto, una

clase define las características y comportamientos comunes de los objetos, en otras

palabras la clase es el molde para la creación de los mismos. En las Próximas líneas

les presento un ejemplo de la Clase Alumno en .net

La clase alumno es una abstracción 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;

Page 4: Introducción a la Programación Orientada a cap2

}

}

#endregion

}

}

En el ejemplo que se muestra para la definición de la Clase Instructor se toman

características y funcionalidades definidas en otra clase denominada Persona. Las

clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de

clasificación. 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

{

Page 5: Introducción a la Programación Orientada a cap2

m_FechaIngreso = value;

IsModified = true;

}

}

#endregion

}

}

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)

{

Page 6: Introducción a la Programación Orientada a cap2

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("[email protected]");

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("[email protected]", "AmericaA00*");

SmtpServer.EnableSsl = true;

try

{

SmtpServer.Send(mail);

}

catch (SmtpException ex)

{

info.Text = ex.Message;

}

catch (Exception ex)

{

info.Text = ex.Message;

}

}

}

Page 7: Introducción a la Programación Orientada a cap2

Con la finalidad de entender todos los conceptos explicados en este blog sobre

Introducción a la Programación Orientada a Objetos se les coloca a continuación un

link con el código completo de un programa para hacerle tanto mantenimiento a las

tablas de Alumnos e Instructores, como ejecutar el envío 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, presentación.

Link Codigo Fuente: http://dl.dropbox.com/u/8067930/MVA/MVAEscuela.zip

Link Script BD: http://dl.dropbox.com/u/8067930/MVA/MVAEscuelaDB_Script.zip

Para finalizar la grafica del Diagrama de Componente para este ejemplo: