jueves, 25 de mayo de 2017

PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos o POO es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. 

La POO es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
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.
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 registrados como "públicos" (public) en C. Los componentes registrados como "privados" (private) también se heredan pero se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Para poder acceder a un atributo u operación de una clase en cualquiera de sus subclases pero mantenerla oculta para otras clases es necesario registrar los componentes como "protegidos" (protected), de esta manera serán visibles en C y en D pero no en otras clases.
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).
Método
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento
Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.
Atributos
Características que tiene la clase.

Los métodos
Los métodos son las funciones que llevan a cabo el proceso o la lógica de la clase, y crear un método dentro de la clase es muy parecido a la forma que hemos utilizado anteriormente. Los métodos también tendrán un tipo de acceso, al igual que los datos. Trabajarán sobre los datos de la clase. No hay que olvidar que todos los métodos conocen todos los datos definidos dentro de la clase, y pueden recibir parámetros y regresar valores. A un dato definido dentro de la clase no necesitamos pasarlo como parámetro ya que el método lo conoce. Solamente los métodos que necesiten ser invocados desde el exterior deben tener acceso público. Si el método sólo se invoca desde el mismo interior de la clase su acceso debe ser privado. Esto lo hacemos con fines de seguridad y para mantener el encapsulamiento correctamente.
Cómo declarar la clase y los datos
La declaración de la clase es un proceso sencillo. Las clases se declaran dentro de un namespace y cualquiera que tenga acceso a ese namespace puede crear objetos de la clase. No olvidemos que la clase es como el plano y los objetos son realmente los que usamos para llevar a cabo el trabajo.

Para declarar una clase, todo lo que se necesita es escribir una definición de estructura y sustituir la palabra reservada struct por class. Por ejemplo, una clase empleado con campos como el nombre, el departamento, la posición, el una función que nos imprima la información de este quedaría así:
class Empleado {
char* m_nombre;
char* m_departamento;
char* m_posicion;
long m_salario;
void Imprimir( Empleado infoEmpleado);
}

Cómo asignarles valores a datos publicos
Como ya tenemos la instancia, ya podemos comenzar a trabajar con ella. Lo primero que haremos será asignarle un valor al dato lado. Haremos la asignación por medio del operador de asignación = (igual), pero también deberemos indicar a cuál de todos los datos de la clase vamos a acceder. Esto lo hacemos con el
operador punto. Por ejemplo, asignemos el valor de 5 al lado, realizando esto como vemos en el código a continuación:
miCubo.lado = 5;

LOS FLUJOS

Los flujos también son conocidos como streams por su nombre en inglés. Se los llama de esta forma porque nos recuerdan como fluye el agua, pero en este caso se tratará de flujos de información. El stream es utilizado para poder mover información de un lugar a otro. A veces, moveremos la información de la memoria a otra parte de la memoria, pero generalmente lo que haremos será mover la información de la memoria a un dispositivo de almacenamiento como el disco duro o del dispositivo nuevamente a la memoria.
Cuando hacemos uso de los flujos, la información no es enviada en un solo movimiento, sino que se envía byte por byte de forma ordenada. 

es un diagrama de actividades que representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general.
En SysML el diagrama ha sido extendido para indicar flujos entre pasos que mueven elementos físicos (p. ej., gasolina) o energía (p. ej., presión). Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.
Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin del proceso.

CÓMO EMPEZAR A DEPURAR UN PROGRAMA

Para depurar un programa nosotros tenemos varias herramientas, pero es importante en primer lugar conocer los posibles errores que podemos tener. Básicamente podemos tener dos clases de errores bien diferenciados: por un lado los errores de compilación y por otro los errores en tiempo de ejecución.
Los errores de compilación son aquellos que impiden que el programa logre compilarse y generalmente son más fáciles de resolver. Muchos de estos errores se deben a problemas de sintaxis, es decir, son responsabilidad del usuario.
Los errores en tiempo de ejecución son aquellos que suceden cuando el programa se está ejecutando. Estos errores pueden deberse a problemas de lógica, es decir, que el algoritmo no fue diseñado correctamente. Pero también pueden ocurrir debido a un mal control de la información, por ejemplo, podemos tratar de leer más allá de los límites correspondientes a un arreglo determinado.
Para corregir los errores de compilación
La mejor forma de poder aprender a depurar programas es con la práctica. Para esto crearemos un pequeño programa de ejemplo. El siguiente programa tiene varios errores para poder identificar y corregir. 

using System;
using System.Collections.Generic;
using System.Text;
namespace Cap12_1
{
class Program 
static void Main(string[] args) 

No hay comentarios:

Publicar un comentario