sábado, 1 de marzo de 2014

DFD (Diagrama de flujo de datos)

Un diagrama de flujo de datos (DFD sus siglas en español e inglés) es una representación gráfica del flujo de datos a través de un sistema de información. Un diagrama de flujo de datos también se puede utilizar para la visualización de procesamiento de datos (diseño estructurado). Es una práctica común para un diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción entre el sistema y las entidades externas. Este contexto a nivel de DFD se "explotó"
logo oficial
Los diagramas de flujo de datos fueron inventados por Larry Constantine, el desarrollador original del diseño estructurado, basado en el modelo de computación de Martin y Estrin: "flujo gráfico de datos" . Los diagramas de flujo de datos (DFD) son una de las tres perspectivas esenciales de Análisis de Sistemas Estructurados y Diseño por Método SSADM. El patrocinador de un proyecto y los usuarios finales tendrán que ser informados y consultados en todas las etapas de una evolución del sistema. Con un diagrama de flujo de datos, los usuarios van a poder visualizar la forma en que el sistema funcione, lo que el sistema va a lograr, y cómo el sistema se pondrá en práctica. El antiguo sistema de diagramas de flujo de datos puede ser elaborado y se comparó con el nuevo sistema de diagramas de flujo para establecer diferencias y mejoras a aplicar para desarrollar un sistema más eficiente. Los diagramas de flujo de datos pueden ser usados para proporcionar al usuario final una idea física de cómo resultarán los datos a última instancia, y cómo tienen un efecto sobre la estructura de todo el sistema. La manera en que cualquier sistema es desarrollado, puede determinarse a través de un diagrama de flujo de datos. modelo de datos.
niveles, los cuales son:
  • Nivel 0: Diagrama de contexto.
  • Nivel 1: Diagrama de nivel superior.
  • Nivel 2: Diagrama de detalle o expansión.
  •  
 www.neoteo.com




El logotipo oficial de DFD

Logo de la aplicacion DFD


www.neoteo.com

Que hay sobre DFD

TUTORIAL DE DFD

IMAGEN DE LA APLICACION EN DFD

miércoles, 26 de febrero de 2014

PROGRAMACION ORIENTADA A OBJETOS

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa losobjetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendoherenciacohesiónabstracciónpolimorfismoacoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Introducción[editar]

Los objetos son entidades que tienen un determinado estadocomportamiento (método) e identidad:
  • El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
  • El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
  • 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 programación orientado a objetos.
La POO 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 Programación Orientada a Objetos, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

Origen[editar]

Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves podían afectar unas a las otras. La idea surgió al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "sobre la marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos.
La programación orientada a objetos se fue convirtiendo en el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se habla también de programación dirigida por eventos.
Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada,BASICLisp y Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por su parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet y a la implementación de la máquina virtual de Java en la mayoría de navegadoresPHP en su versión 5 se ha modificado; soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.


Ejercicios Basicos de Programacion

EJERCICIOS RESUELTOS 
1. Realizar un programa que resuelva cualquier ecuación de segundo grado ax2
-bx = c. Por tanto, debe
pedir al usuario que introduzca los valores de a, b y c. Y el programa indicará las dos posibles raices
solución.
#include <stdio.h>
#include <math.h>
int main()
{
 float raiz1, raiz2;
 int a, b, c;

 system(“cls”);
 printf(“Una ecuación de segundo grado tiene esta forma ax2+bx=c \n”);
 printf(“Indique el valor de a: “);
 scanf(“%i”, &a);

 printf(“Indique ahora el valor de b: “);
 scanf(“%i”, &b);

 printf(“Por último indique el valor de c: “);
 scanf(“%i”, &c);

 /* Se van a realizar todas las operaciones sin comprobaciones del tipo ¿se
 hará un sqrt de un número negativo?, ¿dividiremos por 0?, con lo cual el
 programa está expuesto a multitud de posibles fallos. Cuando conozcan las
 estructuras de decisión, podrán mejorarlo */

 raiz1 = (-b + sqrt ((b*b) – (4*a*c))) / (2*a);
 raiz2 = (-b – sqrt ((b*b) – (4*a*c))) / (2*a);

 printf(“El resultado de la ecuación %ix2+%ix=%i , es el siguiente: primera
 raiz %f, segunda raiz %f”, a, b, c, raiz1, raiz2);
 system(“pause”);
 return 0;
} I.T. Industrial
Fundamentos de Informática



Ejercicios de Teoría

5/20

2. Realizar un programa que convierta a euros una determinada cantidad en pesetas que el usuario le
indique por teclado. (1 euro = 166.386 ptas.)
#include <stdio.h>
int main()
{ const float EURO = 166.386;
 int PESETAS;
 float RESULTADO;

 system(“cls”);
 printf(“Indique el número de PESETAS que quiere convertir a EUROS”);
 scanf(“%i”, &PESETAS);

 RESULTADO = PESETAS/EURO;
 printf(“Teniendo en cuenta que un EURO son %f ptas, %i ptas son %f euros \n”, EURO,
PESETAS, RESULTADO);

 system(“pause”);
 return 0;
}

AQUI LES DEJO UN ENLACE CON EJERCICIOS BASICOS EN JAVA ECLIPSE:


DIFERENCIAS ENTRE JAVA Y C++


  DIFERENCIAS MAS NOTORIAS:
 Orientación a objetos:
  • En C++ se pueden escribir programas orientados a objetos, no orientados a objetos, o mezcla de ambos (por ejemplo, tener clases con funciones globales en el mismo programa)
  • Java es puramente orientado a objetos; cualquier función debe pertenece a alguna clase (es un método). 

Control sobre la plataforma (hardware+S.O.)
  • C y C++: el programador tiene control del procesador.
  • Java: el programa se ejecuta sobre un procesador virtual (JVM) que abstrae al programador de la plataforma concreta

Código de máquina generado:
  • C y C++: el compilador genera código de máquina para una plataforma concreta
  • Java: el compilador genera código de máquina (bytecode) para el procesador JVM

Liberación de Memoria:
  • C y C++: a cargo del programador (delete).
  • Java: automática; los objetos creados son destruidos automáticamente ente cuando se quedan sin referencias.

Punteros:
  • C y C++: existen punteros con una aritmética bien definida, y entre otras cosas, permiten programador explorar la memoria del computador físico.
  • Java: no existe el concepto de puntero; los objetos son accedidos mediante referencias.

Paquetes:
  • C y C++: no existe tal concepto; lo más aproximado son los archivos de biblioteca (.h)
  • Java: un paquete es una entidad organizativa que permite agrupar clases, interfaces y excepciones, así como que sus elementos dispongan de una determinada visibilidad con respecto a elementos externos al paquete.

Conversión implícita de tipos:
  • C y C++: existe (flexibilidad para el programador)
  • Java: no existe por considerarse un mecanismo objeto de errores potenciales

Sobrecarga de funciones y operadores:
  • C++: existen ambos tipos de sobrecarga
  • Java: sólo existe la sobrecarga de funciones (métodos).

Herencia múltiple:
  • C++: existe
  • Java: no existe por considerarse poco eficiente.

Interfaces:
  • C++: no existen este concepto.
  • Java: existe el concepto de interfaz como conjunto de especificaciones de métodos y de atributos constantes.

Estructuras dinámicas:
  • C++: Librería STL
  • Java: paquete java. útil. Los nombres y el funcionamiento son distintos.

JAVA VS  C++
Compiladores:
  • C++: Muchos compiladores. Pueden ser bastante distintos.
  • Java: Un único compilador siempre igual.

Objetos:
  • C++: Ningún ancestro común.
  • Java: Todos los objetos heredan automáticamente de la clase Object.