DARK BOY

DARK BOY

jueves, 16 de junio de 2011

TAREA: PROGRAMACION A OBJETOS

 Que es un Objeto?
En C++ un objeto es un elemento declarado de un tipo clase. Se conoce también como una instancia de una clase.

Añadir leyenda

Los objetos se pueden tratar como cualquier variable C. La principal diferencia es que se puede llamar a cualquiera de las funciones que pertenecen a un objeto, esto es, se puede enviar un mensaje a ella.
Un objeto se define como la unidad que en tiempo de ejecución realiza las tareas de un programa.

Después de declarar int i; podemos decir que "i es un objeto de tipo int." En POO / C++, "objeto" por lo general significa "instancia de una clase." Por lo tanto, una clase define el comportamiento de, posiblemente, muchos objetos (instancias).
Objeto es el concepto clave de la Programación Orientada a Objetos, la idea de objeto es similar a la del mundo real, un objeto puede ser una silla, una mesa. Tu perro es un objeto.
Existen cuatro principios básicos que cualquier sistema orientado a objetos debe incorporar, que se esquematizan.
 

El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto en una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque lo que nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.

La encapsulación da lugar a que las clases se dividan en dos partes:
  1. Interface: captura la visión externa de una clase, abarcando la abstracción del comportamiento común a los ejemplos de esa clase.
  2. Implementación: comprende la representación de la abstracción, así como los mecanismos que conducen al comportamiento deseado
La herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.
Es la relación entre una clase general y otra clase más especifica. Por ejemplo: Si declaramos una clase párrafo derivada de una clase texto, todos los métodos y variables asociadas con la clase texto, son automáticamente heredados por la subclase párrafo.
El polimorfismo se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente.
Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).
Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.
La abstracción encarada desde el punto de vista de la programación orientada a objetos expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás. Además de distinguir entre los objetos provee límites conceptuales. Entonces se puede decir que la encapsulación separa las características esenciales de las no esenciales dentro de un objeto. Si un objeto tiene más características de las necesarias los mismos resultarán difíciles de usar, modificar, construir y comprender.
La misma genera una ilusión de simplicidad dado a que minimiza la cantidad de características que definen a un objeto.
En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (Característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.



Ventajas de la POO:

Proximidad de los conceptos de modelado respecto a objetos del mundo real.
• Mejora la captura y validación de requisitos.
• Facilita la construcción, mantenimiento y reutilización.
• Conceptos comunes de modelado durante el análisis, diseñado e implementación.
• Facilita la transición entre las distintas fases.
• Disipa las barreras entre el “que” y el “como
• Permite el dominio del problema (El usuario es el que sabe sobre el problema).

Desventajas de la POO:

Un objeto contiene datos y operaciones, que operan sobre datos pero existen objetos degenerados y se destigen dos:
a) Un objeto sin datos.
b) Un objeto sin operaciones, con solo operaciones de crear, recuperar, actualizar y borrara.


domingo, 15 de mayo de 2011

TAREA 1


Que es lenguaje de programación
Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1 Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

Los lenguajes de programación facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten ser leídas y escritas por personas, a su vez resultan independientes del modelo de computador a utilizar.

Orígenes del lenguaje C

Los orígenes de C se remontan al año 1972, en los Laboratorios Bell de la compañía AT&T, ubicada en Murray Hill, New Jersey, en Estados Unidos. C surgió de la mente de un solo hombre, Dennis Ritchie, que por aquel entonces trabajaba en la citada compañia. No es posible hablar de sus orígenes sin hacer mención al sistema operativo UNIX. Los años 70 fueron testigos del nacimiento de UNIX, el cual, posteriormente, se convierte en un estándar de 'de facto' (una forma que, sin tener carácter de ley, es aceptada casi universalmente) para los sistemas operativos multiusuario en el campo de los grandes ordenadores. UNIX proporciona a sus usuarios una serie de herramientas para ayudar a la confección de programas; C era una de esas herramientas, y muy pronto se convirtió en `la' herramienta, hasta el punto de que el propio compilador de C y la mayor parte de UNIX se reescribieron en dicho lenguaje. Vemos ya aquí un aspecto de C sobre su capacidad para la creación de Software de Sistemas. La primera implementación de C ocurre en 1971, en la computadora DEC PDP-11. Tenía solamente 24 Kbytes de memoria, de la cual el sistema UNIX utilizaba 16 Kbytes, y un disco fijo de 512 Kbytes.

Que es C
    C está especialmente pensado para su uso en el desarrollo de Software de Sistemas.
    El Software de Sistemas enlaza al Hardware con el usuario final del equipo, ya sea una computadora personal o una gran computadora. El primer ejemplo de Software de Sistemas es el propio sistema operativo. Esto no quiere decir que no sea posible hacer un programa de juegos en C (prácticamente se puede hacer casi todo con cualquier lenguaje), sino que, simplemente, sacaremos más rendimiento a nuestro tiempo aplicando C al Software de Sistemas.
   C es un lenguaje que permite estar lo suficientemente próximos a la máquina como para manejar directamente posiciones de memoria, bits aislados dentro de estas posiciones, e incluso, de alguna forma, los propios registros de la CPU; a la vez que proporciona las estructuras características de los lenguajes de alto nivel, tan importantes para hacer de la programación una tarea no tan difícil. Por todo esto, cabe afirmar que el C se encuentra a mitad de camino entre un lenguaje ensamblador y un lenguaje de alto nivel de tipo estructurado como el Pascal.

Que es C++

C++ es un lenguaje de programación de aplicación general basado en el lenguaje de programación C. Es un superconjunto del lenguaje C que incluye clases, funciones en línea, sobrecarga de operadores y de nombres de funciones, tipos constantes, referencias, operadores para administración del almacenamiento en memoria, verificación de argumentos de funciones, conversión de tipos, patrones de clases y funciones, y el manejo de excepciones.
    Puede considerarse a C++ como un lenguaje multiparadigma en el cual el programador puede escoger el estilo de programación y establecer las características del lenguaje para satisfacer el problema.

Orígenes del lenguaje C++

 Los orígenes de C++ datan de 1980 cuando se agregaron a C las clases, la verificación del tipo de los argumentos de las funciones y su conversión, y otros aspectos menores; el lenguaje resultante se denominó 'C con Clases'. La descripción inicial de 'C con Clases' se realizó en Enero de 1982. Este lenguaje fue creado por el Dr. Bjarne Stroustrup, miembro de Laboratorios Bell de AT&T.
    Entre 1983 y 1984, 'C con Clases' fue rediseñado, extendido y reimplantado; el lenguaje resultante fue denominado C++. El nombre C++ (en español se pronuncia C más más y en inglés C plus plus) fue acuñado por Rick Mascitti en el verano de 1983. El nombre representa la naturaleza evolutiva de las modificaciones con respecto a C. Los caracteres '++' hacen referencia al operador de incremento en C. La expresión C = C + 1 es equivalente a C++.
    En octubre de 1984, Bjarne Stroustrup realiza la descripción formal de C++.
Después de refinamientos adicionales, C++ es puesto a disposición general en 1985 y fue documentado por su propio autor en el libro "The C++ Programming Language", publicado en 1986 por Addison-Wesley.
    En 1987, se hizo evidente la necesidad de estandarizar a C++ debido al explosivo crecimiento de su empleo. Se comienza a preparar el camino de su formalización manteniendo contactos entre los realizadores de compiladores de C++ y los principales usuarios mediante correo ordinario y electrónico (e-mail) y reuniones de cuerpo presente en conferencias sobre C++ y en otros sitios.
    En diciembre de 1989, por iniciativa de la compañia Hewlett-Packard, el comité ANSI X3J16, tuvo una reunión organizativa a los efectos de estandarizar el C++.
    En febrero de 1990, Margaret Ellis y Bjarne Stroustrup, ambos miembros de AT&T, escribieron el libro "The Annotated C++ Reference Manual" y publicado por
Addison-Wesley. (Este libro ha sido seleccionado por ANSI para servir como documento base para la estandarización formal de C++).
    En junio de 1991, en Lund, Suecia, el comité ANSI unificó formalmente los esfuerzos por un C++ estándar, en varias naciones como Francia, Alemania, Dinamarca, Japón, Suecia y Reino Unido bajo los auspicios del Instituto Internacional de Estándares.
    En marzo de 1992, los comités ANSI X3J16 e ISO WG21 prepararon un borrador
de trabajo para un estándar C++.
    En 1997 se logra llegar a un C++ estándar, ISO/IEC 14882. Bjarne Stroustrup escribe el libro "The C++ Programming Language - 3rd. ed." publicado por Addison Wesley Longman, Inc.

Herramientas necesarias para escribir en C++

Windows

Uno de los entornos de desarrollo más conocidos entre los programadores de C sobre Windows, tanto novatos como expertos, es el Bloodshed Dev-C++, que es un entorno libre multiplataforma. Tal entorno de desarrollo fue abandonado y retomado mejorándolo pasando a llamarse WxDev-C++. Es posible utilizarlo tanto para C como para C++.
También hay otras alternativas privativas como los compiladores de Borland o de Microsoft (Microsoft Visual C++).
Para conseguir el WxDev-C++ puede utilizarse la web

 GNU/Linux

En los sistemas GNU/Linux, será necesario tener instaladas las herramientas gcc y make y la versión 6 de la glibc con su documentación, que son las que permitirán compilar los programas.
Para escribir y modificar el código, es posible utilizar cualquier editor de texto plano (en lo posible que cuente con resaltado de sintaxis), como son emacs, vim, kate, gedit o geany.
Sin embargo, para quienes son novatos en la programación, es recomendable utilizar un entorno de desarrollo como son el Anjuta DevStudio (para el entorno GNOME) o KDevelop (para el entorno KDE), ya que incluyen facilidades adicionales para la ejecución y solución de problemas.
Los programas mencionados se incluyen dentro de la instalación estándar de la mayoría de las distribuciones actuales de GNU/Linux, de modo que para instalarlos sólo será necesario seguir el procedimiento usual de instalación de aplicaciones para la distribución deseada.