Mostrando las entradas con la etiqueta Ventajas y Desventajas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Ventajas y Desventajas. Mostrar todas las entradas

Introducción a las clases y los objetos

jueves, 16 de enero de 2014 0 comentarios



"Muchos de nuestros sueños parecen al principio imposibles, luego pueden parecer improbables, y luego, cuando nos comprometemos firmemente, se vuelven inevitables. "
– Christopher Reeve
Primero que nada se aclara que C++ es un lenguaje capaz de soportar dos diferentes paradigmas, Programación orientada a objetos y programación estructural, como se mencionó en publicaciones  anteriores.  

Programación estructurada

VS

Programación orientada a objeto


La programación estructurada pretende resolver un problema de principio a fin en una sola estructura de código. La programación orientada a objetos, resuelve el problema identificando los actores que tienen participación en el problema e identificando también sus acciones. Con esta información se crean los objetos (que son una interpretación de algunos de estos actores), estos objetos están compuestos por clases donde se detalla las acciones que realizan y las propiedades de estos. Al tener creados los objetos solo es ponerlos a interactuar entre ellos.




Lo que debemos saber de Objetos


Objeto es un principio de alto nivel, un concepto que nos permite organizar software.    Si se programa con enfoque orientado a objetos, se intenta descubrir e implementar los objetos que juegan un rol en el dominio del problema y en consecuencia del programa. La idea fundamental de los lenguajes orientados a objetos es combinar en una única unidad o módulo, tanto los datos como las funciones que operan sobre esos datos. Tal unidad se llama objeto.

Difinicion:
Un objeto se puede definir desde el punto de vista conceptual como una entidad individual de un sistema y que se caracteriza por un estado y un comportamiento. Desde el punto de vista de implementación, un objeto es una entidad que posee un conjunto de datos y un conjunto de operaciones (funciones o métodos).

La programación orientada a objetos, tal vez el paradigma de programación más utilizado en el mundo del desarrollo de software y de la ingeniería de software del siglo XXI , trae un nuevo enfoque a los retos que se plantean en la programación estructurada cuando los problemas a resolver son complejos.
Cuando se trata de resolver un problema con orientación a objetos, dicho problema no se descompone en funciones como en programación estructurada tradicional, caso de C, sino en objetos. El pensar en términos de objetos tiene una gran ventaja: se asocian los objetos del problema a los objetos del mundo real.
Las funciones de un objeto se llaman funciones miembro en C++ o métodos y son el único medio para acceder a sus datos. Los datos de un objeto, se conocen también como atributos o variables de instancia. Si se desea leer datos de un objeto, se llama a una función miembro del objeto.Se accede a los datos y se devuelve un valor. No se puede acceder a los datos directamente.
Los datos están ocultos, de modo que están protegidos de alteraciones accidentales. Los datos y las funciones se dice que están encapsulados en una única entidad. El encapsulamiento de datos y la ocultación de los datos son términos clave en la descripción de lenguajes orientados a objetos.
Un programa C++ se compone, normalmente, de un número de objetos que se comunican unos con otros mediante la llamada a otras funciones miembro.


Lo que debemos saber de las Clases


Antes de la creación de un objeto, se debe definir en primer lugar su formato general, su plantilla, que recibe el  nombre de clase. En POO los objetos son miembros o instancias de clases. En esencia, una clase es un tipo de datos al igual que cualquier otro tipo de dato definido en un lenguaje de programación. La diferencia reside en que la clase es un tipo de dato que contiene datos y funciones. Una clase describe muchos objetos y es preciso definirla, aunque su definición no implica creación de objetos.

Definición:
Una clase contiene la especificación de los datos que describen un objeto junto con la descripción de las acciones que un objeto conoce cómo ha de ejecutar. Por lo tanto, puede definirse como una plantilla el cual funciona como una estructura de dato o tipo de dato que contiene funciones (métodos) como miembros y datos.

Puede decirse que el concepto de clase es estático y el concepto de objeto es dinámico; ya que, sólo existe en tiempo de ejecución. Cada objeto de una clase comparte con el resto las operaciones  y a la vez posee sus propios valores para los atributos que posee: esto es  su estado. Las operaciones, también llamadas mensajes, se usarán tanto para cambiar el estado de un objeto como para comunicar objetos entre sí mediante el paso de mensajes.

Una clase es una descripción general de un conjunto de objetos similares. Por definición, todos los objetos de una clase comparten los mismos atributos (datos) y las mismas operaciones (métodos). Una clase encapsula las abstracciones de datos y operaciones necesarias para describir una entidad u objeto del mundo real.
Una clase se representa en UML mediante un rectángulo que contiene en una banda con el nombre de la clase y opcionalmente otras dos bandas con el nombre de sus atributos y de sus operaciones o métodos.





Antecedentes de C++

sábado, 21 de diciembre de 2013 0 comentarios



"Cualquiera  puede escribir código que la PC entienda. Los buenos programadores escriben código que los humanos pueden entender." -
 Martin Fowler . 
A principios de la década de los ochenta, Bjarne Stroustrup desarrolló una extensión de C en los laboratorios Bell: C++. Este lenguaje proporciona un conjunto de características que “pulen” al lenguaje C, pero lo más importante es que proporciona la capacidad de una programación orientada a objetos.
Una revolución se está gestando en la comunidad del software. Escribir software rápida, correcta y económicamente es aún una meta escurridiza, en una época en que la demanda de nuevo y más poderoso software se encuentra a la alza. Los objetos son en esencia componentes reutilizables de software, que modelan elementos del mundo real. Los
desarrolladores de software están descubriendo que el uso de una metodología de diseño e implementación modular y orientada a objetos puede hacerlos más productivos que mediante las populares técnicas de programación anteriores. Los programas orientados a objetos son más fáciles de entender, corregir y modificar.

Historia de C++


El lenguaje de programación C++, desarrollado en AT&T por Bjarne Stroustrup a principios de la década de los ochenta, se basa en dos lenguajes (C, que se desarrolló inicialmente en AT&T para implementar el sistema operativo UNIX a principios de la década de 1970, y Simula 67, un lenguaje de programación de simulación, desarrollado en Europa y puesto en circulación en 1967). C++ absorbió las características de C y agregó las herramientas de Simula para crear y manipular objetos.
Ninguno de los lenguajes C o C++ estaba diseñado originalmente para usarse ampliamente, más allá de los laboratorios de investigación de AT&T. Pero el soporte básico se desarrolló rápidamente para cada uno de ellos.

Características de C++


Lenguaje  Orientado a objetos.
A mediados de los años 60 se empezó a vislumbrar el uso de las computadoras para la  simulación de problemas del mundo real. Pero el mundo real está lleno de objetos, en la  mayoría de los casos complejos, los cuales difícilmente se traducen a los tipos de datos  primitivos de los lenguajes imperativos. Así es que a dos noruegos, Dahl y Nygaard , se  les ocurrió el concepto de objeto y sus colecciones, llamadas clases de objetos, que  permitieron introducir abstracciones de datos a los lenguajes de programación. La  posibilidad de reutilización del código y sus indispensables modificaciones, se reflejaron en  la idea de las jerarquías de herencia de clases. A ellos también les debemos el concepto de  polimorfismo introducido vía procedimientos virtuales. Todos estos conceptos fueron  presentados en el lenguaje Simula 67, desde el año 1967. Aunque pensado como lenguaje  de propósito general, Simula tuvo su mayor éxito en las aplicaciones de simulación  discreta, gracias a la clase SIMULATION que facilitaba considerablemente la  programación.


Ventajas

  • En c++,  la unidad de programación es la clase , aparit de la cual los objetos son producidos. Se trata de una programación orientada a objetos.
  • Las bibliotecas estándar de c++ proporcionan un conjunto extenso de capacidades de entrada y salida de tipo seguro. No podrá introducirse datos equivocados dentro del sistema.  
  • Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros.
    Es muy potente en lo que se refiere a creación de sistemas complejos, un lenguaje muy robusto.
  • Permite elaborar aplicaciones sencillas , hasta sistemas operativos y mucho más, todo eso dependiendo del manejo del lenguaje.
    Actualmente, puede compilar y ejecutar código de C, ya viene con librerías para realizar esta labor.
  • Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos fuentes abiertos... hay material de sobra y basta para aprender lo necesario y mucho más con este lenguaje.
  • Existen muchos algoritmos cuyo pseudocódigo se encuentra ya desarrollado en C++, de manera que puedes tomarlo y amoldarlo a tu solución (porque el que veas un fragmento de código no asegura que sea correcto al 100%).

Desventajas

  • Uso de DLLs (librerías dinámicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas librerías, y correr los riesgos por el manejo de esta memoria.
  • Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.
  • Manejo de punteros y memoria respecto a ello. Claro, esta también es una gran ventaja porque permite un mejor control de la memoria y una buena administración de recursos de computadora, pero la inexperiencia de los desarrolladores o la pérdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre.
    No es recomendable para desarrollo de páginas Web.
  • Existen muchos entornos de programación para C++. No existen estándares para ello. De manera que puedes encontrar C++ para Unix/Linux, C++ para Windows, C++ para MacOS, y asi indistintamente. Además, en cada SO encuentras diferentes IDEs de desarrollo, y también encuentras IDEs para desarrollo de aplicaciones gráficas como Anjuta, Qt para Unix/Linux, Borland C++ Builder y Visual Studio C++ para Windows.

Antecedentes del lenguaje C

1 comentarios



Si no fuera por el C, estaríamos escribiendo programas en BASI, PASAL, o OBOL. 
La computadora, a diferencia de otras herramientas que en general apoyan el esfuerzo físico  de los humanos, fue inventada para facilitar el trabajo intelectual. Es  decir que esta fue específicamente diseñada para brindar soluciones  a través de algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programación, el cual la  computadora es capaz de entender, luego la computadora ejecuta el algoritmo expresado  como programa en el lenguaje de programación en cuestión  y listo.
En consecuencia, los lenguajes de  programación tienen que adaptarse a éstas crecientes necesidades y aumentar la  expresividad para poder resolver problemas muy diversos y cada vez más complejos.
Además, tienen que ofrecer cierta eficiencia en la ejecución. Es un logro difícil de alcanzar  y por lo tanto, se requiere una búsqueda constante de nuevos lenguajes para ello.

Historia de C


C es una evolución de los lenguajes BCPL -desarrollado por Martin Richards- y B –desarrollado por Ken Thompson en 1970- para el primitivo UNIX de la computadora DEC PDP-7.
C nació realmente en 1978, con la publicación de The C Programming Languaje, por Brian Kernighan y Dennis Ritchie (Prentice Hall, 1978). Desde su nacimiento, C fue creciendo en popularidad y los sucesivos cambios en el lenguaje a lo largo de los años junto a la creación de compiladores por grupos no involucrados en su diseño, hicieron necesario pensar en la estandarización de la definición del lenguaje C.

Características de C


Este es un lenguaje  de  programación  de propósito general que ofrece como ventaja economía  de expresión, control de flujo y estructura de datos mordernos y un rico conjunto de operadores. A demás, C no es un lenguaje  de muy alto nivel, y no esta especializado en alguna área especial de aplicación. Pero su ausencia de restricciones y su generalidad lo hacen más conveniente y efectivo para muchas tareas que otros lenguajes.
Este lenguaje ha sido estrechamente asociado con el sistema unix en donde fue desarrollado puesto que tanto que el sistema como los programas que corren en el están escritos en lenguaje C. Sin embargo este no está ligado a ningún sistemas operativo ni a ninguna máquina, debido a su utilidad para escribir compiladora y sistemas operativos, se utiliza con igual eficacia para escribir importantes programas de diversas disciplinas.

Lenguaje Imperativo

En este tipo de lenguajes, cuyo origen  está ligado a la propia arquitectura de von Neumann, la arquitectura consta de una  secuencia de celdas, llamadas memoria, en la cual se pueden guardar en forma codificada,  los mismo datos que instrucciones; y de un procesador, el cual es capaz de ejecutar de  manera secuencial una serie de operaciones, principalmente aritméticas y booleanas,  llamadas comandos. En general, un lenguaje imperativo ofrece al programador conceptos  que se traducen de forma natural al modelo de la máquina
Ventajas
  • C se caracteriza por su velocidad de ejecución. En los primeros días de la informática, los problemas de tiempo de ejecución se resolvían escribiendo todo o parte de una aplicación en lenguaje ensamblador (lenguaje muy cercano al lenguaje máquina).
  • El lenguaje C es poderoso y flexible, con órdenes, operaciones y funciones de biblioteca que se pueden utilizar para escribir la mayoría de los programas que corren en la computadora.
  • Se puede utilizar C para desarrollar sistemas operativos, compiladores, sistemas de tiempo real y aplicaciones de comunicaciones.
  • Un programa C puede ser escrito para un tipo de computadora y trasladarse a otra computadora con pocas o ninguna modificación -propiedad conocida como portabilidad-. El hecho de que C sea portable es importante ya que la mayoría de los modernos computadores tienen un compilador C, una vez que se aprende C no tiene que aprenderse un nuevo lenguaje cuando se escriba un programa para otro tipo de computadora. No es necesario reescribir un problema para ejecutarse en otra computadora.
  • Debido a que existen muchos programas escritos en C, se han creado numerosas bibliotecas C para programadores profesionales que soportan gran variedad de aplicaciones. Existen bibliotecas del lenguaje C que soportan aplicaciones de bases de datos, gráficos, edición de texto, comunicaciones, etc.
Desventajas
  • C es un lenguja de relativo bajo nivel.
  • Este trata el mismo tipo de objeto que la mayoría de las computadoras, llamadas caracteres, números y direcciones.
  • No proporciona operaciones para tratar directamente con objetos compuestos, tales como cadenas de caracteres, conjuntos, listas o arreglos.
  • No existen operaciones que manipulen arreglos o cadenas completas.
  • El lenguaje no define ninguna facilidad para asignación de almacenamiento que no sea la de definición estática y la disciplina de pilas y provistas por las variables locales de funciones.
  • No emplea heap ni recolector de basura.
  • En si mismo no proporciona capacidades de entrada y salida; no hay propociones Read o write, ni métodos propios de acceso a archivos.

Lenguaje Compilado e Interpretado

martes, 17 de diciembre de 2013 0 comentarios



"Desde muchos puntos de vista aprender a programar es toda una disciplina,  que requiere nuestro mejor tiempo y dedicación."

 

La principal razón por que las personas aprenden lenguajes y técnicas  de programación es utilizar la computadora  como una herramienta para resolver problemas.
Como hemos mostrado en publicaciones anteriores, la programación no es una ciencia  de conocimientos lineales, es decir, existen muchas ramas  en  las cuales podemos desempeñarnos.  Entre ellas aplicaciones web, móviles o de escritorio.
Primero que nada  debemos adquirir cientos conceptos y herramientas  básica para iniciar, a continuación mostrare algunos de ellos que son de mucha utilidad.

Lenguaje de programacion:


Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente.

Lenguaje Compilado


Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente.
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).

Compilador:

Se puede describir de una manera  general que un compilador es un conjunto de herramientas y programas  que traduce un texto que básicamente  es un código fuente, escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras  llamado código objeto, que este a su vez es equivalente a un lenguaje que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser simplemente texto.
De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora
Tipos de compiladores:
Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.




Lenguaje Interpretado


Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. Los cuales permiten tener una aplicación multiplataforma. En vez de traducir el programa fuente y grabar en forma permanente,   el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativos, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario.

Interprete:

Describiremos  intérprete en términos de informática,  como aquel que es capaz de traducir  un código fuente en lenguaje máquina también. El intérprete se diferencia del compilador en que el ejecuta forma ordenada cada instrucción una vez que se traduce. Este proceso puede causar que sea más lenta la ejecución del programa, así que los intérpretes se utilizan menos que los compiladores. La interpretación comparte muchos aspectos con el compilador. Los análisis léxico, sintáctico y verificación de tipos son exactamente los mismos que en un compilador.

Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesa directamente para evaluar expresiones y ejecutar sentencias, y así hasta terminar. Un intérprete puede necesitar evaluar la misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen ciclos), por eso la interpretación puede ser más lenta que la ejecución de un programa compilado. Pero escribir un intérprete es más fácil de mover a una máquina diferente, así que para aplicaciones donde la velocidad no importa, lo mejor es utilizar un intérprete.



Ventajas y Desventajas


•Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.
•Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente.
•Un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces).
•Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres.
Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos.
•Los lenguajes compilados, que permiten el uso de un compilador, prescinden de este tipo de operadores.




 
Taller de desarrollo c++ © 2013 | Designed by Alexander C.P , in collaboration with cienciaeducacion100 , Ciencias y Sistemas and cienciaeducacion100@gmail.com