martes, 5 de julio de 2016





a la 
programación orientada a 
objetos

este es un vídeo de programación orientada a objetos:


introducción:

el término de Programación Orientada a Objetos indica más una forma de diseño y una metodología de desarrollo de software que un lenguaje de programación, ya que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés abreviado OOD, Object Oriented Design), a cualquier tipo de lenguaje de programación.
El desarrollo de la OOP empieza a destacar durante la década de los 80 tomando en cuenta la programación estructurada, a la que engloba y dotando al programador de nuevos elementos para el análisis y desarrollo de software
Los objetos son entidades que tienen un determinado "estado", "comportamiento (método)" e "identidad":
La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una "programación estructurada camuflada" en un lenguaje de POO.

La programación orientada a objetos difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada solo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
que es un objeto:
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa).
Programación dirigida por eventos
La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen.
Para entender la programación dirigida por eventos, podemos oponerla a lo que no es: mientras en la programación secuencial (o estructurada) es el programador el que define cuál va a ser el flujo del programa, en la programación dirigida por eventos será el propio usuario —o lo que sea que esté accionando el programa— el que dirija el flujo del programa. Aunque en la programación secuencial puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la programación dirigida por eventos.

El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el administrador de evento. Los eventos soportados estarán determinados por el lenguaje de programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo programador.

que es una clase:
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.

Clases en programación Orientada a Objetos:




que es una herencia:
Herencia

Por ejemplo, herencia de la clase C a la clase D, es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (prívate) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. En el caso de los componentes registrados como "protegidos" (protected) también se heredan, pero solo para esa clase, no para futuras clases heredadas. Esto es así para mantener hegemónico el ideal de POO.


En la programación dirigida por eventos,

al comenzar la ejecución del programa se llevarán a cabo las inicializaciones y demás código inicial y a continuación el programa quedará bloqueado hasta que se produzca algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasará a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el usuario ha hecho clic en el botón de play de un reproductor de películas, se ejecutará el código del administrador de evento, que será el que haga que la película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación Lexico y Visual Basic, en los que a cada elemento del programa (objetos, controles, etcétera) se le asignan una serie de eventos que generará dicho elemento, como la pulsación de un botón del ratón sobre él o el redibujado del control.
La programación dirigida por eventos es la base de lo que llamamos interfaz de usuario, aunque puede emplearse también para desarrollar interfaces entre componentes de Software o módulos del núcleo.
En los primeros tiempos de la computación, los programas eran secuenciales, también llamados Batch. Un programa secuencial arranca, lee parámetros de entrada, procesa estos parámetros, y produce un resultado, todo de manera lineal y sin intervención del usuario mientras se ejecuta.

Con la aparición y popularización de los PC, el software empezó a ser demandado para usos alejados de los clásicos académicos y empresariales para los cuales era necesitado hasta entonces, y quedó patente que el paradigma clásico de programación no podía responder a las nuevas necesidades de interacción con el usuario que surgieron a raíz de este hecho.


identificación de los elementos de la poo:

Objeto
Todo es un objeto en la POO
El objeto es una abstracción del dominio del problema Un objeto tiene:
Comportamiento: métodos, mensajes a los que puede responder
Estructura interna y estado interna: las variables de instancia o propiedades y sus valores
Identidad: un objeto sólo es idéntico a sí mismo
Instancia: todo objeto es instancia de una clase Comportamiento:
¿Qué hace el objeto? indica cuáles son las responsabilidades del objeto
Se especifica a través del conjunto de mensajes
O protocolo Comportamiento:
¿Cómo lo hace? la implementación indica cómo hace el objeto para responder a los mensajes
Se especifica a través de un conjunto de métodos
Es privada del objeto, ningún otro objeto puede accederla Estado interno: está compuesto por las variables de instancia del objeto
Las v.i. pueden ser propiedades del objeto y otros objetos
Es privado del objeto. Instanciación Envío de un mensaje ¿ ? NO!!! Al enviarle un mensaje a un objeto,
Éste responde activando el método
Asociado a ese mensaje
Como resultado del envío de un mensaje puede retornarse un objeto Sintaxis del mensaje <objeto receptor>.<nombre de mensaje> (<parámetros>) una Cuenta. De opositar (100) decirle a una cuenta
Bancaria que deposite $100
Se escribe Método contraparte funcional del mensaje
Expresa el cómo se realiza el mensaje Puede realizar 3 cosas:
Modificar el estado interno de un objeto
Colaborar con otros objetos
Retornar y terminar
Nombre del método lista de parámetros comentario del método lista de variables temporales cuerpo del método consiste
En la resolución del
Comportamiento de opositar (un Monto)
"Agrega un Monto al saldo actual de la cuenta"
Saldo <--- saldo + un Monto Encapsulamiento Características:
Esconde detalles de implementación
Protege el estado interno de los objetos
Un objeto sólo muestra su "cara visible" por medio del protocolo
Facilita modularidad si el titular de la
Cuenta bancaria
Es Julio González
Sólo lo sabe la cuenta bancaria
Y sólo podemos acceder a él
A través del protocolo
Clases una clase es una descripción abstracta de un conjunto de objetos
Las clases:
Describen el formato de los objetos
Agrupan comportamiento en común
Pueden pensarse como moldes de un tipo específico de objeto Clases e instancias una clase es responsable de crear sus instancias
Todas las instancias de una clase se comportan de la misma manera

Cada instancia mantendrá su propio estado interno

lunes, 4 de julio de 2016

programación orientada a objetos:

La programación Orientada a objetos  (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.


La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.
Muchos de los objetos pre-diseñados de los lenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas.
Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
Su uso se popularizó a principios de la década de 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.


La POO es un paradigma surgido en los años 1970, que utiliza objetos como elementos fundamentales en la construcción de la solución. Un objeto es una abstracción de algún hecho o ente del mundo real, con atributos que representan sus características o propiedades, y métodos que emulan su comportamiento o actividad. Todas las propiedades y métodos comunes a los objetos se encapsulan o agrupan en clases. Una clase es una plantilla, un prototipo para crear objetos; en general, se dice que cada objeto es una instancia o ejemplar de una clase.


características:
Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las características siguientes son las más importantes:1

Abstracción
Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño 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.
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
Modularidad
Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas.
Principio de ocultación
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
Recolección de basura
La recolección de basura (garba ge collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Objecto Pascal, esta característica no existe y la memoria debe des asignarse expresamente.



lenguajes de programación:

Visual C# 

es un lenguaje de programación que se ha diseñado para compilar diversas aplicaciones que se ejecutan en .NET Framework.  C# es simple, eficaz, con seguridad de tipos y orientado a objetos.  Las numerosas innovaciones de C# permiten desarrollar aplicaciones rápidamente y mantener la expresividad y elegancia de los lenguajes de estilo de C. 

Visual C# es una implementación del lenguaje C# de Microsoft. Visual Studio ofrece compatibilidad con Visual C# con un completo editor de código, un compilador, plantillas de proyecto, diseñadores, asistentes para código, un depurador eficaz y de fácil uso y otras herramientas.  La biblioteca de clases de .NET Framework ofrece acceso a numerosos servicios de sistema operativo y a otras clases útiles y adecuadamente diseñadas que aceleran el ciclo de desarrollo de manera significativa.   

Características principales de C#

A continuación enumeramos las principales características que definen al lenguaje de programación C#. Algunas de estas características no son propias del lenguaje, sino de la plataforma .NET, aunque se listan aquí ya que tienen una implicación directa en ellenguaje.

Sencillez de uso

 C# elimina muchos elementos añadidos por otros lenguajes y quefacilitan su uso y compresión, como por ejemplo ficheros de cabecera, oficheros fuentes IDL1 .12. Es por ello que se dice que C# esautocontenido. Además, no se incorporan al lenguaje elementos pocoútiles, como por ejemplo macros, herencia múltiple u operadoresdiferentes al operador de aceso a métodos (operador punto) paraacceder a miembros de espacios de nombres.

Modernidad

 Al ser C# un lenguaje de última generación, incorpora elementos que seha demostrado a lo largo del tiempo que son muy útiles para elprogramador, como tipos decimales o

booleanos

, un tipo básico

string

,así como una instrución que permita recorrer colecciones con facilidad(instrucción

foreach

). Estos elementos hay que simularlos en otroslenguajes como C++ o Java.

Orientado a objetos

 C# como lenguaje de última generación, y de propósito general, esorientado a objetos. C# no permite la inclusión de funciones ni variablesglobales que no estén incluidos en una definición de tipos, por lo que laorientación a objetos es más pura y clara que en otros lenguajes comoC++. Además, C# soporta todas las características del paradigma de laprogramación orientada a objetos, como son la

encapsulación, laherencia

y el

 polimorfismo

Orientado a componentes

 La propia sintasix de C# incluye elementos propios del diseño decomponentes que otros lenguajes tienen que simular. La sintaxis de C#incluye por ejemplo formas de definir

 propiedades

,

eventos

o

atributos

Recolección de basura

 Como ya se comentó, todo lenguaje incluido en la plataforma .NET tienea su disposición el recolector de basura del CLR. Esto implica que no esnecesario incluir instrucciones de destrucción de objetos en el lenguaje.

Seguridad de tipos

 C# incluye mecanismos de control de acceso a tipos de datos, lo quegarantiza que no se produzcan errores difíciles de detectar como unacceso a memoria de ningún objeto, por ejemplo. Para ello, el lenguajeprovee de una serie de normas de sintaxis, como por ejemplo no realizarconversiones entre tipos que no sean compatibles. Además, no sepueden usar variables no inicializadas previamente, y en el acceso atablas se hace una comprobación de rangos para que no se excedanninguno de los índices de la misma. Se puede controlar así mismo los

 

 

desbordamientos en operaciones aritméticas, produciéndoseexcepciones cuando se produzcan.

Instrucciones seguras

 Para evitar errores comunes como se producían programando en otroslenguajes, en C# se han impuesto una serie de restricciones en el uso deinstrucciones de control más comunes. Por ejemplo, la evaluación detoda condición ha de ser una expresión condicional y no aritmética,como ocurría por ejemplo en C o en C++. Así se evitan errores porconfusión del operador igualdad con el de asignación. Otra restricciónque se impone en la instrucción de selección

switch

, imponiendo quetoda selectora de la instrucción finalice con una instrucción

break

o

goto

que indique cuál es la siguiente acción a realizar.

Unificación de tipos

 En C# todos los tipos derivan de una superclase común llamada

System.Object

, por lo que automáticamente heredarán todos losmiembros definidos en esta clase. Es decir, son

objetos

. A diferencia de Java, en C# esta característica también se aplica para los tipos básicos.

Extensión de los operadores básicos

 Para facilitar la legibilidad de código y conseguir que los nuevos tipos dedatos que se definan a través de las estructuras estén al mismo nivelque los elementos predefinidos en el lenguaje, al igual que C++ pero adiferencia de Java, C# permite redefinir el significado de la mayoría delos operadores (incluidos el de la conversión) cuando se apliquen adiferentes tiops de objetos.

Las redefiniciones de operadores se hacen de manera inteligente, de modo que a partir de una única definición de los operadores

++

y

-

el compilador puede deducir automáticamente cómo ejecutarlos de manera prefija y postfija. Definiendooperadores simples como la suma, el compilador deduce como aplicar la versión deasignación compuesta (

+=

). Además, para asegurar la consistencia, el compilador exige que los operadores con opuesto (como por ejemplo el operador igualdad

==

ysu opuesto

!=

) siempre se redefinan por parejas.

Extensión de modificadores

 C# ofrece, a través de los

atributos

, la posiblidad de añadir a losmetadatos del módulo resultante de la compilación de cualquier fuenteinformación adicional a la generada por el compilador que luego podráser consultada en tiempo de ejecución a través de la biblioteca dereflexión de .NET.

Eficiente

 En C#, todo el código incluye numerosas restricciones para garantizar suseguridad, no permitiendo el uso de punteros. Sin embargo, y adiferencia de Java, existen modificadores para saltarse esta restricción,pudiendo manipular objetos a través de punteros. Para ello bastaidentificar regiones de código con el identificador

unsafe

, y podránusarse en ellas punteros de forma similar a como se hace en C++. Estacaracterística puede resultar de utilidad en situaciones en las que senecesite gran velocidad de procesamiento


Visual J# permite a los des arrolladores utilizar la sintaxis del lenguaje Java para generar aplicaciones y servicios que se ejecutarán en .NET Framework. Visual J# integra la sintaxis de Java en el entorno de desarrollo integrado (IDE) de Visual Studio®. No es una herramienta para desarrollar aplicaciones que se ejecuten en una máquina virtual de Java.

Características:

Visual J# tiene como destino de compilación el Common Language Runtime (CLR) y puede usarse para programar aplicaciones para .NET Framework, incluidos los servicios Web XML y las aplicaciones Web, que aprovechen al máximo la funcionalidad de .NET Framework. Las aplicaciones de Visual J# se benefician de:

·         Integración entre lenguajes.

·         Seguridad mejorada.

·         Compatibilidad con el control de versiones y la implementación.

·         Servicios de depuración y generación de perfiles


ASP.NET

es un framework para aplicaciones web desarrollado y comercializado por Microsoft. Es usado por programadores y diseñadores para construir sitios web dinámicos, aplicaciones web y servicios web XML. Apareció en enero de 2002 con la versión 1.0 del .NET Framework, y es la tecnología sucesora de la tecnología Active Server Pages (ASP). ASP.NET está construido sobre el Common Language Runtime, permitiendo a los programadores escribir código ASP.NET usando cualquier lenguaje admitido por el .NET Framework.

 

Características

Páginas

Las páginas de ASP.NET, conocidas oficialmente como "web forms" (formularios web), son el principal medio de construcción para el desarrollo de aplicaciones web.8 Los formularios web están contenidos en archivos con una extensión ASPX; en jerga de programación, estos archivos típicamente contienen etiquetas HTML o XHTML estático, y también etiquetas definiendo Controles Web que se procesan del lado del servidor y Controles de Usuario donde los desarrolladores colocan todo el código estático y dinámico requerido por la página web. Adicionalmente, el código dinámico que se ejecuta en el servidor puede ser colocado en una página dentro de un bloque <% -- código dinámico -- %> que es muy similar a otras tecnologías de desarrollo como PHP, JSP y ASP, pero esta práctica es, generalmente, desaconsejada excepto para propósitos de enlace de datos pues requiere más llamadas cuando se genera la página. 

ASP.NET no sólo funciona sobre el servidor de Microsoft IIS, también lo hace sobre Apache.

Formulario web de ejemplo[editar]

Este es un ejemplo que utiliza código "en línea", opuesto al código independiente (code-behind).

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)

    {

   Label1.Text = DateTime.Now.ToLongDateString();

    }

</script

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Página de Ejemplo</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:Label runat="server" id="Label1" />

    </div>

    </form>

</body>

</html>


Visual  NET 

es un framework de Microsoft que hace un énfasis en la transparencia de redes, con independencia de plataforma de hardware y que permita un rápido desarrollo de aplicaciones. Basado en ella, la empresa intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el sistema operativo hasta las herramientas de mercado.

 

.NET podría considerarse una respuesta de Microsoft al creciente mercado de los negocios en entornos Web, como competencia a la plataforma Java de Oracle Corporation y a los diversos framework de desarrollo web basados en PHP. Su propuesta es ofrecer una manera rápida y económica, a la vez que segura y robusta, de desarrollar aplicaciones –o como la misma plataforma las denomina, soluciones– permitiendo una integración más rápida y ágil entre empresas y un acceso más simple y universal a todo tipo de información desde cualquier tipo de dispositivo


Características
Es el encargado de proveer lo que se llama código administrado, es decir, un entorno que provee servicios automáticos al código que se ejecuta. Los servicios son variados:

Cargador de clases: permite cargar en memoria las clases.
Compilador MSIL a nativo: transforma código intermedio de alto nivel independiente del hardware que lo ejecuta a código de máquina propio del dispositivo que lo ejecuta.
Administrador de código: coordina toda la operación de los distintos subsistemas del Common Language Runtime.
Recolector de basura: elimina de memoria objetos no utilizados automáticamente.
Motor de seguridad: administra la seguridad del código que se ejecuta.
Motor de depuración: permite hacer un seguimiento de la ejecución del código aún cuando se utilicen lenguajes distintos.
Verificador de tipos: controla que las variables de la aplicación usen el área de memoria que tienen asignado.
Administrador de excepciones: maneja los errores que se producen durante la ejecución del código.
Soporte de multiproceso (hilos): permite desarrollar aplicaciones que ejecuten código en forma paralela.
Empaquetador de COM: coordina la comunicación con los componentes COM para que puedan ser usados por el .NET Framework.
Biblioteca de Clases Base que incluye soporte para muchas funcionalidades comunes en las aplicaciones.