Sunteți pe pagina 1din 10

Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)

DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
CARACTERSTICAS POO
ABSTRACCIN

Ignorancia Selectiva

La abstraccin nos ayuda a trabajar con cosas complejas

Se enfoca en lo importante

Ignora lo que no es importante (simplifica)

Una clase es una abstraccin en la que:

Se enfatizan las caractersticas relevantes

Se suprimen otras caractersticas

Una clase debe capturar una y solo una abstraccin clave

El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto e


identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La
abstraccin es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante ella
podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que
se quiere atacar.

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET

HERENCIA Clase
Es una relacin entre clases en la cual una clase Base
comparte la estructura y comportamiento definido en Transporte
otra clase (Grady Booch) -pasajeros
+Avanzar()
Cada clase que hereda de otra posee: +Detenerse()

Los atributos de la clase base adems de los


propios
Automvil Avin
Soporta todos o algunos de los mtodos de la
clase base

Una subclase hereda de una clase base

La herencia (en la POO) es una potente arma que podemos utilizar


para varias cosas, entre ellas, por ejemplo, ahorrar lneas de cdigo Clases
heredando de otras clases, compartiendo variables miembro o funcin
miembro. Tambin podemos generar superclases abstractas para Derivadas
definir comportamientos genricos que necesitemos. La herencia es
una de las caractersticas que ms se hace notar a la hora de escribir
o
cdigo, o reutilizar cdigo de otros programadores. (1)
subclases
ENCAPSULAMIENTO

Principio que establece que los atributos propios de un objeto no deben ser visibles desde
otros objetos

Deben ser declarados como privados

Permite abstraer al resto del mundo de la complejidad de la implementacin interna

Permite exponer el estado del objeto slo a travs del comportamiento que le hayamos
definido mediante miembros pblicos

Por qu es til?

Punto de Control/Validacin

Mejor respuesta ante los Cambios

Otro de los pilares de la orientacin a objetos es el encapsulamiento. Para entender este principio
veamos un ejemplo prctico:

Como todos ustedes se imaginarn, no es necesario ser mecnico de automviles para poder manejar
uno. Si el comprender cmo es el funcionamiento interno del motor, la direccin, los frenos, los cilindros,
etc. fuera requisito para poder manejar un automvil, seran muchos menos los conductores certificados
y sera mucho ms difcil aprender a manejar. Es ms, si a cualquier automotriz se le ocurriera cambiar el
funcionamiento interno de alguna de estas cosas, probablemente todos los conductores tendran que
volver a aprender como funciona el nuevo componente interno para poder seguir manejando sin

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
problemas. Por suerte esto no es as, ya que la complejidad interna del funcionamiento de un automvil
est escondida de los conductores (usuarios). Para poder interactuar con el automvil, ste nos expone
una interfaz sencilla y definida, que no cambia nunca por ms que cambien internamente el
funcionamiento de sus componentes. Esta interfaz est compuesta por el volante, los pedales, la palanca
de cambios, el asiento, etc. De esta forma decimos que el automvil ha encapsulado su complejidad
interna.

POLIMORFISMO

Es la propiedad que tienen los objetos de permitir invocar genricamente un comportamiento


(mtodo) cuya implementacin ser delegada al objeto correspondiente recin en tiempo de
ejecucin

El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es as

Transporte
Avanzar
Frenar

Transpor
te
Avanzar
Fren
ar

Transpor
te
Avanzar
Fren
ar

Transpor
te
Avanzar
Fren
ar

Ejemplo:

Aqu tenemos un ejemplo prctico de la implementacin de polimorfismo en un diseo orientado a


objetos. Por un lado tenemos la clase base Transporte, que posee los mtodos Avanzar y Frenar.
Por otro lado tenemos tres clases distintas derivadas de la clase Transporte, cada una de las cuales
podr sobrescribir la implementacin de los mtodos Avanzar y Frenar para que su comportamiento sea
ms especfico.

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
Ahora bien, como todas heredan de la misma clase base, las clases derivadas pueden ser tratadas
genricamente. Esto quiere decir que podramos tener un array que almacene objetos de tipo
Transporte, y recorrerlo luego para llamar al mtodo Avanzar de cada uno. De esta forma, en tiempo
de codificacin es imposible saber a qu mtodo Avanzar se est llamando en realidad (al del Auto? Al
del caballo? Al del transbordador?), sino que esta decisin es tomada en tiempo de ejecucin en base al
tipo particular de objeto que est instanciado.

En pseudocdigo, esto se escribira de la siguiente manera:

Definir arrayTransportes (3) de tipo Transporte

arrayTransportes(1) = nuevo Automvil() //Un automvil ES UN TIPO DE transporte

arrayTransportes(2) = nuevo Transbordador() //Un Transbordador ES UN TIPO DE transporte

arrayTransportes(3) = nuevo Caballo() //Un Caballo ES UN TIPO DE transporte

Por Cada (Transporte t en arrayTransportes)

t.Avanzar()

t.Frenar()

Fin

RELACIONES

Todo sistema abarca muchas clases y objetos

Los objetos contribuyen en el comportamiento de un sistema colaborando entre si

La colaboracin se logra a travs de las relaciones

Existen dos tipos principales de relaciones

Asociacin

Agregacin

RELACIONES DE ASOCIACIN

Una asociacin es una conexin entre dos clases que representa una comunicacin

Una asociacin puede tener nombre

La comunicacin puede ser tanto uni como bi-direccional (por defecto)

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
La multiplicidad es el nmero de instancias que participan en una asociacin

Ejemplo:

Una Persona es Duea de un Vehculo

Un Vehculo Pertenece a una Persona

Persona -dueo Vehiculo

Esta se divide:

Composicin

Agregacin

RELACIN DE COMPOSICIN (2)

Agregar o componer varios objetos para obtener una mayor funcionalidad


! Un objeto se puede construir a partir de otros objetos

RELACIONES DE AGREGACIN

La agregacin es una forma especial de asociacin donde un todo se relaciona con sus
partes

Tambin se conoce como una parte de o una relacin de contencin

Ejemplo:
(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
Una Puerta es una parte de un Vehculo

El Vehculo es azul, la Puerta es Azul

Mover el Vehculo implica mover la Puerta

Vehiculo Puerta
-color
+Mover()

ELEMENTOS DE LA POO (PROGRAMACIN ORIENTADA A OBJETOS)

En la actualidad, el paradigma de orientacin a objetos es sin lugar a dudas el ms utilizado por


las empresas de todo el mundo a la hora de encarar desarrollos de aplicaciones de software,
ya que permite representar de manera relativamente simple modelos y realidades muy
complejas y esto hace que el software sea ms fcil de programar, comprender y mantener.
Por otra parte, luego de ms de 20 aos de investigacin y desarrollo sobre Orientacin a
Objetos pareciera ser que la industria se ha dado cuenta que el paradigma est lo
suficientemente maduro como para dar soporte a las aplicaciones ms importantes del mundo
actual.

Qu es un objeto?

Informalmente, un objeto representa una entidad del mundo real

Entidades Fsicas

(Ej.: Vehculo, Casa, Producto)

Entidades Conceptuales

(Ej.: Proceso Qumico, Transaccin Bancaria)

Entidades de Software

(Ej.: Lista Enlazada, Interfaz Grfica)

Definicin Formal (Rumbaugh):

Un objeto es un concepto, abstraccin o cosa con un significado y lmites


claros en el problema en cuestin

Un objeto posee (Booch):

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
Estado

Comportamiento

Identidad

En resumen un objeto es una abstraccin de la realidad que tiene un significado concreto y


claro para el problema que se est modelando.

QU ES UNA CLASE?

Una clase es una descripcin de un grupo de objetos con:

Propiedades en comn (atributos)

Comportamiento similar (operaciones)

La misma forma de relacionarse con otros objetos (relaciones)

Una semntica en comn (significan lo mismo)

Una clase es una abstraccin que:

Enfatiza las caractersticas relevantes

Suprime otras caractersticas (simplificacin)

Un objeto es una instancia de una clase

METODOS

Existe una clasificacin de los mtodos segn su objetivo:

Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las
llamamos mtodos.

Los mtodos son como funciones que estn asociadas a un objeto.

Un mtodo NO es una funcin.

Una funcin tiene 0 o ms argumentos, el mtodo tiene SIEMPRE 1 o ms. Ese argumento
obligatorio

Con el nombre de una funcin disponemos de una implementacin, con un mtodo tenemos
la posibilidad de una implementacin por objeto (empleando el mismo nombre).

SOBRECARGA DE MTODOS

La sobrecarga de mtodos es la creacin de varios mtodos con el mismo nombre pero


con diferentes firmas y definiciones.

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
SOBRE ESCRITURA DE MTODOS

La sobreescritura de mtodos es una caracterstica ms de la herencia en Java. Es


decir, en Java las nuevas clases se pueden definir extendiendo clases ya existentes.
Aqu surgen los conceptos de subclase que sera la clase obtenida, y superclase, que
sera la clase que est siendo extendida, tal como tambin ya se ha explicado.
Cuando una nueva clase se extiende desde otra que ya exista, todas las variables y
mtodos que son miembros de la superclase (y todos aquellos miembros de los
antecesores de la superclase) sern tambin miembros de la subclase.

ATRIBUTOS

Caractersticas de cada objeto o propiedades del mismo

PROPIEDADES

Las propiedades permiten implementar el encapsulamiento, impidiendo el acceso directo a los


atributos de una clase y proporcionando un mecanismo para poder obtener y asignar sus
valores.

Ntese que como VB.NET no distingue entre maysculas y minsculas no es posible utilizar
para el miembro de la clase el mismo nombre que para la Propiedad. Sin embargo, es
importante que ambos tengan nombres significativos para la lgica de la aplicacin. No se
recomienda el agregado de prefijos o sufijos a los nombres.

Mensajes (Comentarios)

C# soporta 3 tipos de comentarios

string nombre = Juan; // Comentario de una sola lnea

/* Comentario con mas

de una lnea*/

/// <summary>

/// Documentacin XML que puede ser consumida por otras

/// herramientas para mostrar ayuda dinmica o generar

/// documentacin en varios formatos

/// </summary>

public class Matematica {

/// <summary>

/// Calcula la suma de dos nmeros enteros

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET
/// </summary>

/// <param name="x">El primer operando de la suma</param>

/// <param name="y">El segundo operando de la suma</param>

/// <returns> La suma entera de ambos operandos</returns>

public int Sumar (int x, int y) {return x + y;}

VB.NET soporta dos tipos de comentarios

'Comentario simple

Dim nombre As String = Juan

''' <summary>

''' Documentacin XML que describe un tipo y sus miembros

''' </summary>

''' <param name="x">El primer operando de la suma</param>

''' <param name="y">El segundo operando de la suma</param>

''' <returns> La suma entera de ambos operandos</returns>

Public Function Sumar (x as Integer, y as Integer) as Integer

return x + y

End Function

INTERFACES

Recurso de diseo soportado por los lenguajes orientados a objetos que permite
definir comportamiento

Permite que clases que no estn estrechamente relacionadas entre s deban tener el
mismo comportamiento

La implementacin de una interfaz es un contrato que obliga a la clase a implementar


todos los mtodos definidos en la interfaz

Vehiculo

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html Aereo Acuatico Terrestre
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas)
DCE0_FundamentosDeProgramacion
DCE0_ProgramacionOO_C#_VBNET

Se crean las interfaces que definen comportamiento

Hidroavin deber definir los comportamientos de cada una de las interfaces que
implemente

interface interface
Acuatico Aereo
+Navegar() +Volar()

Hidroavion

(1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacion-orientada-a-objetos-
herencia.html
(2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf

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