SlideShare una empresa de Scribd logo
4
Lo más leído
5
Lo más leído
9
Lo más leído
Universidad Técnica de Manabí
Facultad de Ciencias Informáticas
Escuela de Ingeniería en Sistemas Informáticos
Proyecto de Investigación en el Aula:
Diseño y desarrollo de un Sistema Informático en lenguaje de
programación c++ para el control del inventario y la facturación de una
distribuidora de agua purificada envasada en el periodo mayo-
septiembre 2014.
Autor:
Zherdmant Cevallos Erick Joel
Asignaturas: Programación II y Estructura de Datos
Nivel: 2° “A”
Docente Guía: Ing. Christian Torres
Periodo:
Mayo 2014 – Septiembre 2014
Portoviejo – Manabí – Ecuador
I. Introducción:
En la actualidad la importancia del software en la vida cotidiana, ha
alcanzado niveles sorprendentes.
Hace varios años atrás, nadie se hubiera imaginado la importancia de los
celulares y las computadoras hoy en día. Desde el hecho de mantenernos
informados, hasta realizar tareas especializadas en la más diversas actividades
de una gran industria.
Todo esto posible, gracias a potentes hardware y por supuesto a grandes
software; que cada día ocupan mayor importancia en el ámbito de los
negocios. Es por esto que este pequeño proyecto está orientado hacia este
sector específicamente al sector de distribución de agua embotellada; con la
finalidad de implementar un sistema informático y aplicar los conocimientos
aprendidos en la materia de Programación II y Estructura de datos durante el
periodo mayo – septiembre 2014.
Este proyecto cuenta con una justificación, su respectivos objetivos, su marco
teórico en donde se explican algunos conceptos básicos de las materia
además de dar una noción de cómo está estructurado la programación; y por
supuesto la respectivas conclusiones y recomendaciones.
II. Justificación:
Para justificar este proyecto debemos recurrir a la importancia y a las
facilidades que presta la implementación en los negocio sistemas informáticos;
puesto que permite llevar de mejor manera la contabilidad y tener un mayor
control de las ventas realizadas, y lo que se tiene en stock; además; es uno de
los medios más eficientes al momento de ahorrar papel.
El proyecto se desarrollara en la plataforma Borland c++ 5.2; esto es para
darle aplicación y funcionamiento practico a los conocimientos que hemos
adquiridos durante nuestro proceso de formación en el segundo nivel de la
carrera de ingeniería en sistemas informáticos de la Facultad de Ciencias
Informáticas de la Universidad Técnica de Manabí.
III. Objetivos:
3.1. Objetivo General:
 Crear un Sistema Informático funcional, eficiente y eficaz en la
plataforma de desarrollo Borland c++ 5.2; que permita en control de
inventario y facturación de una distribuidora de agua purificada
envasada, aplicando los conocimientos adquiridos durante las clases
de Programación II y Estructura de Datos del 2º nivel de la Carrera de
Ingeniería en Sistemas Informáticos.
3.2. Objetivos Específicos:
 Aplicar conocimientos básicos adquiridos en la materia programación I
y complementarlos con los adquiridos en la materia programación II;
para mejorar la eficiencia y la eficacia del código implementado en el
sistema.
 Mejorar el rendimiento del sistema aplicando los conocimientos de la
materia de Estructura de Datos para una mejor utilización de memoria
en la ejecución del sistema.
 Diseñar un sistema informático cuya interfaz sea amigable con el
usuario, además de ser eficiente y eficaz
IV. Marco teórico
4.1. Plataforma de Desarrollo
El proyecto será desarrollado en el Compilador Borland 4.5 que utiliza la
plataforma c++, que es un lenguaje de programación diseñado a mediados
de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el
extender al exitoso lenguaje de programación C con mecanismos que
permitan la manipulación de objetos. En ese sentido, desde el punto de vista
de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se
sumó a los otros dos paradigmas que ya estaban admitidos (programación
estructurada y la programación orientada a objetos). Por esto se suele decir
que el C++ es un lenguaje de programación multiparadigma.
Actualmente existe un estándar, denominado ISO C++, al que se han adherido
la mayoría de los fabricantes de compiladores más modernos. Existen también
algunos intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores, y de
poder crear nuevos tipos que se comporten como tipos fundamentales.
El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el
lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes
se había usado el nombre "C con clases". En C++, la expresión "C++" significa
"incremento de C" y se refiere a que C++ es una extensión de C.
4.1.1. Conocimientos a aplicar.
4.1.1.1. Programación 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 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. 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.
La programación orientada a objetos 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 ellas.
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" (private) 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.
Esto es así para mantener hegemónico el ideal de POO.
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). Es una instancia a una clase.
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
Mensaje
Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus
métodos con ciertos parámetros asociados al evento que lo generó.
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de
objetos), que hace los datos visibles desde fuera del objeto y esto se define
como sus características predeterminadas, y cuyo valor puede ser alterado
por la ejecución de algún método.
Estado interno
Es una variable que se declara privada, que puede ser únicamente accedida
y alterada por un método del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos). No es visible al
programador que maneja una instancia de la clase.
Componentes de un objeto
Atributos, identidad, relaciones y métodos.
4.1.2. Estructura de Datos
Es una forma de organizar un conjunto de datos elementales con el objetivo
de facilitar su manipulación. Un dato elemental es la mínima información que
se tiene en un sistema.
Una estructura de datos define la organización e interrelación de estos y un
conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones
básicas son:
 Alta, adicionar un nuevo valor a la estructura.
 Baja, borrar un valor de la estructura.
 Búsqueda, encontrar un determinado valor en la estructura para realizar
una operación con este valor, en forma secuencial o binario (siempre y
cuando los datos estén ordenados).
 Otras operaciones que se pueden realizar son:
 Ordenamiento, de los elementos pertenecientes a la estructura.
 Apareo, dadas dos estructuras originar una nueva ordenada y que
contenga a las apareadas.
 Cada estructura ofrece ventajas y desventajas en relación a la
simplicidad y eficiencia para la realización de cada operación. De esta
forma, la elección de la estructura de datos apropiada para cada
problema depende de factores como la frecuencia y el orden en que
se realiza cada operación sobre los datos.
4.2. Funciones del Sistema:
El Sistema contara con un menú, el cual tendrá las siguientes opciones:
 Inventario: Esta opción constara con cuatro opciones:
consultar, ingresar, modificar, borrar.
 Facturación: constara con una opción para consulta de
ventas realizadas, consulta de clientes, y una opción para la
facturación.
 Salir: Cierra la sesión y el sistema.
4.3. Seguridades:
El sistema constara al momento de iniciar con una pantalla para ingresar un
usuario y contraseña, dependiendo si es un administrador o no, puede
acceder a todas las opciones del menú o tendrá ciertas restricciones.
El usuario que no es administrador solo tendrá restricciones en la siguiente
opción:
 Inventario: solo podrá acceder a la opción consultar.
 Facturación. Queda restringida la opción consulta de ventas
realizadas.
4.4. Orientación del Sistema:
El sistema estará orientado a las operaciones que se realizan en una
distribuidora de agua, dentro de estas están la venta de agua purificada
envasa en sus diversas presentaciones: bidones, galones, botellas y fundas.
Todas estas ventas estarán registradas en un archivo en donde solo podrá
acceder aquel usuario que tenga la condición de administrador. Este registro
contara con la fecha de venta, el cliente que realizo la venta, y el monto de la
venta.
Se podrá ingresar mercadería al inventario, modificarla, borrarla, y consultarla.
También se registran todo los clientes que realicen una compra en un archivo
al cual solo podrá acceder el administrador. En este archivo se registrarán:
 Nombre
 Cedula
 Teléfono
 Correo
Para agregar un nuevo cliente se lo realizara a través de la facturación, en
donde se pedirá el número de cédula, el sistema buscará en el archivo y si no
la encuentra informara que es un nuevo cliente y pedirá el resto de
información.
4.5. Herramientas utilizadas
4.5.1. Estructuras de Datos.
En este sistema se utiliza, dos tipos de estructuras datos:
 Tres listas doblemente enlazadas cerradas;
 Un árbol binario.
Las listas doblemente enlazadas están estructuradas de la siguiente manera,
estas servirán para:
 Las lista de los clientes y empleados.
 Para almacenar los productos que se han adquirido.
 La última es la factura en sí, la cual formara los nodos del árbol
binario.
//**********************************************************
//*************************nodos personas*******************
//**********************************************************
typedef struct _Personas
{Persona *ListaP;
struct _Personas *sig,*ant;
}tpersona;
typedef tpersona *pnodoLDP;
typedef tpersona *ListaDP;
La cual servirá para manejar la información de los empleados y cliente de la
distribuidora; aplicando polimorfismo.
//**********************************************************
//************************nodos productos*******************
//**********************************************************
typedef struct _Producto
{long cod;
Producto *ListaPro;
int stock;
struct _Producto *sig,*ant;
}tproducto;
typedef tproducto *pnodoLDPRO;
typedef tproducto *ListaDPRO;
Esta estructura nos permitirá almacenar los datos de los productos que se
expenden en nuestra distribuidora; marca, contendido neto, precio y el stock.
//**********************************************************
//************************estructura detalles***************
//**********************************************************
typedef struct _Detalles
{int cant;
long codigo;
char *descripcion;
double puni;
double ppagar;
struct _Detalles *sig,*ant;
}tdetalles;
typedef tdetalles *pnodoDE;
typedef tdetalles *ListaDE;
//***********************************************************
//************************nodos factura**********************
//***********************************************************
typedef struct _Factura
{char *codigo;
char *cedula;
ListaDE *descrip;
double totalpagar;
char *estado;
struct _Factura *izq,*der;
}tfactura;
typedef tfactura *pnodoF;
typedef tfactura *ListaF;
Estas dos últimas estructuras, son para el manejo del registro de las ventas
realizadas en la distribuidora, la estructura detalles permitirá crear una lista
dinámica que almacenara los productos comprados en esa factura. La
estructura factura formara los nodos del árbol binario.
4.5.2. Clases y su derivación.
En este proyecto se instanciaron varias clases; todas ellas derivadas de una
sala clase abstracta denominada Producto. De esta se derivan las clases
Media, Litro, Galón, Bidón. Y tenemos un ultima derivación de la clase Media,
de la cual se desprende las clases Funda y Botella.
El esquema seria el siguiente:
En cuanto al manejo de estas clases, se emplean en varias de ellas el
polimorfismo, así como la abstracción de clases en la superclase Producto.
Otra característica empleada en estas es la herencia simple como lo
observamos en el esquema anterior.
Producto
BidónGalónLitro
Media
BotellaFunda
V. Conclusión
 Se concluye que el lenguaje de programación c++, es un
lenguaje muy versátil aunque anticuado; pero no se puede
negar su importancia dentro del software actual; ya que la
gran mayoría de ellos tienen como base la programación en
lenguaje c.
 Los conceptos aprendidos en este lenguaje, servirán como
base a futuro, pues estos mismos conceptos se aplican en
software de desarrollo más actuales tales como Java.
VI. Recomendación:
 Al ser uno de los lenguajes base para la ingeniería en sistemas
informáticos, se recomienda enseñar este lenguaje de
manera transversal con otros en donde se vean reflejados de
manera más concreta los concepto aprendido tales como: la
herencia y el polimorfismo.

Más contenido relacionado

PDF
Solución de problemas mediante busqueda
PPT
Diagramas de Casos de Uso del Negocio y del Sistema
DOCX
PDF
Árboles binarios, ABB y AVL
PPTX
BIBLIOTECAS PARA C++
PPTX
Arboles con raiz
PDF
Búsqueda no informada - Búsqueda bidireccional
DOCX
Arboles En Estructura de Datos
Solución de problemas mediante busqueda
Diagramas de Casos de Uso del Negocio y del Sistema
Árboles binarios, ABB y AVL
BIBLIOTECAS PARA C++
Arboles con raiz
Búsqueda no informada - Búsqueda bidireccional
Arboles En Estructura de Datos

La actualidad más candente (20)

PPTX
Diapositivas modelo OSI
PPTX
Ancho de banda
PPT
Unidad 9 Patrones De DiseñO
PPT
Modelo de Objeto Semantico
 
PDF
Uso de Excepciones en JAVA
PPTX
Programación 3: listas enlazadas
PPT
Arboles Binarios
PDF
Teoremas Fundamentales Algebra de Boole
PPT
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA 2
PPTX
Ventajas y desventajas de visual studio
PPTX
Fundamentos de BD - unidad 3 modelo relacional
PPTX
Búsqueda secuencial y binaria
PDF
Bases de Datos - Parte 3/10 Modelo ER
PDF
Diseño de la interfaz de usuario
PPTX
Arboles presentacion
DOC
Tda cola
PPTX
IEEE 610 and IEEE 1002
PPT
IA CAPITULO 4
PPT
diagrama de casos de uso del negocio y del sistema
Diapositivas modelo OSI
Ancho de banda
Unidad 9 Patrones De DiseñO
Modelo de Objeto Semantico
 
Uso de Excepciones en JAVA
Programación 3: listas enlazadas
Arboles Binarios
Teoremas Fundamentales Algebra de Boole
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA 2
Ventajas y desventajas de visual studio
Fundamentos de BD - unidad 3 modelo relacional
Búsqueda secuencial y binaria
Bases de Datos - Parte 3/10 Modelo ER
Diseño de la interfaz de usuario
Arboles presentacion
Tda cola
IEEE 610 and IEEE 1002
IA CAPITULO 4
diagrama de casos de uso del negocio y del sistema
Publicidad

Similar a Proyecto para programacion y estructura (20)

DOCX
Diseño de Sistemas
DOCX
PDF
Programacion o.o.
PPT
TRABAJO INFORMÁTICA FINAL
DOC
Diseño o.o
DOC
Diseño o.o
DOCX
Trabajo de programacion
PDF
TEMA 1: LENGUAJE DE PROGRAMACIÓN.
PPTX
Trabajo final introduccion a la informatica CARLOS PAZ Y JOSE CARRILLO
PPTX
Programacion visual
PPT
Analisis y diseño orientado a odjetos
DOCX
Metodologías para el Diseño de Sistemas
PPTX
Elionor Herrera (Cumaná Estado Sucre)
PPTX
Programacion orientada a objetos Java
PDF
Pdf glo
PPTX
Trabajo final de introduccion a la informatica
PPTX
Lenguajes de Programación
PPTX
Fundamentos y metodos de analisis de requerimientos
PPTX
Actividad 1 de programacion
DOC
Klenni pino Analisis y diseño de sistemas..
Diseño de Sistemas
Programacion o.o.
TRABAJO INFORMÁTICA FINAL
Diseño o.o
Diseño o.o
Trabajo de programacion
TEMA 1: LENGUAJE DE PROGRAMACIÓN.
Trabajo final introduccion a la informatica CARLOS PAZ Y JOSE CARRILLO
Programacion visual
Analisis y diseño orientado a odjetos
Metodologías para el Diseño de Sistemas
Elionor Herrera (Cumaná Estado Sucre)
Programacion orientada a objetos Java
Pdf glo
Trabajo final de introduccion a la informatica
Lenguajes de Programación
Fundamentos y metodos de analisis de requerimientos
Actividad 1 de programacion
Klenni pino Analisis y diseño de sistemas..
Publicidad

Último (20)

DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
ciencias-1.pdf libro cuarto basico niños
Tarea De El Colegio Coding For Kids 1 y 2
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Escuelas Desarmando una mirada subjetiva a la educación
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Punto Critico - Brian Tracy Ccesa007.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
biología es un libro sobre casi todo el tema de biología
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
ciencias-1.pdf libro cuarto basico niños

Proyecto para programacion y estructura

  • 1. Universidad Técnica de Manabí Facultad de Ciencias Informáticas Escuela de Ingeniería en Sistemas Informáticos Proyecto de Investigación en el Aula: Diseño y desarrollo de un Sistema Informático en lenguaje de programación c++ para el control del inventario y la facturación de una distribuidora de agua purificada envasada en el periodo mayo- septiembre 2014. Autor: Zherdmant Cevallos Erick Joel Asignaturas: Programación II y Estructura de Datos Nivel: 2° “A” Docente Guía: Ing. Christian Torres Periodo: Mayo 2014 – Septiembre 2014 Portoviejo – Manabí – Ecuador
  • 2. I. Introducción: En la actualidad la importancia del software en la vida cotidiana, ha alcanzado niveles sorprendentes. Hace varios años atrás, nadie se hubiera imaginado la importancia de los celulares y las computadoras hoy en día. Desde el hecho de mantenernos informados, hasta realizar tareas especializadas en la más diversas actividades de una gran industria. Todo esto posible, gracias a potentes hardware y por supuesto a grandes software; que cada día ocupan mayor importancia en el ámbito de los negocios. Es por esto que este pequeño proyecto está orientado hacia este sector específicamente al sector de distribución de agua embotellada; con la finalidad de implementar un sistema informático y aplicar los conocimientos aprendidos en la materia de Programación II y Estructura de datos durante el periodo mayo – septiembre 2014. Este proyecto cuenta con una justificación, su respectivos objetivos, su marco teórico en donde se explican algunos conceptos básicos de las materia además de dar una noción de cómo está estructurado la programación; y por supuesto la respectivas conclusiones y recomendaciones.
  • 3. II. Justificación: Para justificar este proyecto debemos recurrir a la importancia y a las facilidades que presta la implementación en los negocio sistemas informáticos; puesto que permite llevar de mejor manera la contabilidad y tener un mayor control de las ventas realizadas, y lo que se tiene en stock; además; es uno de los medios más eficientes al momento de ahorrar papel. El proyecto se desarrollara en la plataforma Borland c++ 5.2; esto es para darle aplicación y funcionamiento practico a los conocimientos que hemos adquiridos durante nuestro proceso de formación en el segundo nivel de la carrera de ingeniería en sistemas informáticos de la Facultad de Ciencias Informáticas de la Universidad Técnica de Manabí.
  • 4. III. Objetivos: 3.1. Objetivo General:  Crear un Sistema Informático funcional, eficiente y eficaz en la plataforma de desarrollo Borland c++ 5.2; que permita en control de inventario y facturación de una distribuidora de agua purificada envasada, aplicando los conocimientos adquiridos durante las clases de Programación II y Estructura de Datos del 2º nivel de la Carrera de Ingeniería en Sistemas Informáticos. 3.2. Objetivos Específicos:  Aplicar conocimientos básicos adquiridos en la materia programación I y complementarlos con los adquiridos en la materia programación II; para mejorar la eficiencia y la eficacia del código implementado en el sistema.  Mejorar el rendimiento del sistema aplicando los conocimientos de la materia de Estructura de Datos para una mejor utilización de memoria en la ejecución del sistema.  Diseñar un sistema informático cuya interfaz sea amigable con el usuario, además de ser eficiente y eficaz
  • 5. IV. Marco teórico 4.1. Plataforma de Desarrollo El proyecto será desarrollado en el Compilador Borland 4.5 que utiliza la plataforma c++, que es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Actualmente existe un estándar, denominado ISO C++, al que se han adherido la mayoría de los fabricantes de compiladores más modernos. Existen también algunos intérpretes, tales como ROOT. Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder crear nuevos tipos que se comporten como tipos fundamentales. El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C. 4.1.1. Conocimientos a aplicar. 4.1.1.1. Programación 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 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. 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. La programación orientada a objetos 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 ellas. 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,
  • 6. 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" (private) 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. Esto es así para mantener hegemónico el ideal de POO. 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). Es una instancia a una clase. 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 Mensaje Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. Propiedad o atributo Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método. Estado interno Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
  • 7. Componentes de un objeto Atributos, identidad, relaciones y métodos. 4.1.2. Estructura de Datos Es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema. Una estructura de datos define la organización e interrelación de estos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones básicas son:  Alta, adicionar un nuevo valor a la estructura.  Baja, borrar un valor de la estructura.  Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma secuencial o binario (siempre y cuando los datos estén ordenados).  Otras operaciones que se pueden realizar son:  Ordenamiento, de los elementos pertenecientes a la estructura.  Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.  Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación. De esta forma, la elección de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operación sobre los datos. 4.2. Funciones del Sistema: El Sistema contara con un menú, el cual tendrá las siguientes opciones:  Inventario: Esta opción constara con cuatro opciones: consultar, ingresar, modificar, borrar.  Facturación: constara con una opción para consulta de ventas realizadas, consulta de clientes, y una opción para la facturación.  Salir: Cierra la sesión y el sistema. 4.3. Seguridades: El sistema constara al momento de iniciar con una pantalla para ingresar un usuario y contraseña, dependiendo si es un administrador o no, puede acceder a todas las opciones del menú o tendrá ciertas restricciones. El usuario que no es administrador solo tendrá restricciones en la siguiente opción:  Inventario: solo podrá acceder a la opción consultar.
  • 8.  Facturación. Queda restringida la opción consulta de ventas realizadas. 4.4. Orientación del Sistema: El sistema estará orientado a las operaciones que se realizan en una distribuidora de agua, dentro de estas están la venta de agua purificada envasa en sus diversas presentaciones: bidones, galones, botellas y fundas. Todas estas ventas estarán registradas en un archivo en donde solo podrá acceder aquel usuario que tenga la condición de administrador. Este registro contara con la fecha de venta, el cliente que realizo la venta, y el monto de la venta. Se podrá ingresar mercadería al inventario, modificarla, borrarla, y consultarla. También se registran todo los clientes que realicen una compra en un archivo al cual solo podrá acceder el administrador. En este archivo se registrarán:  Nombre  Cedula  Teléfono  Correo Para agregar un nuevo cliente se lo realizara a través de la facturación, en donde se pedirá el número de cédula, el sistema buscará en el archivo y si no la encuentra informara que es un nuevo cliente y pedirá el resto de información. 4.5. Herramientas utilizadas 4.5.1. Estructuras de Datos. En este sistema se utiliza, dos tipos de estructuras datos:  Tres listas doblemente enlazadas cerradas;  Un árbol binario. Las listas doblemente enlazadas están estructuradas de la siguiente manera, estas servirán para:  Las lista de los clientes y empleados.  Para almacenar los productos que se han adquirido.  La última es la factura en sí, la cual formara los nodos del árbol binario. //********************************************************** //*************************nodos personas******************* //********************************************************** typedef struct _Personas {Persona *ListaP; struct _Personas *sig,*ant;
  • 9. }tpersona; typedef tpersona *pnodoLDP; typedef tpersona *ListaDP; La cual servirá para manejar la información de los empleados y cliente de la distribuidora; aplicando polimorfismo. //********************************************************** //************************nodos productos******************* //********************************************************** typedef struct _Producto {long cod; Producto *ListaPro; int stock; struct _Producto *sig,*ant; }tproducto; typedef tproducto *pnodoLDPRO; typedef tproducto *ListaDPRO; Esta estructura nos permitirá almacenar los datos de los productos que se expenden en nuestra distribuidora; marca, contendido neto, precio y el stock. //********************************************************** //************************estructura detalles*************** //********************************************************** typedef struct _Detalles {int cant; long codigo; char *descripcion; double puni; double ppagar; struct _Detalles *sig,*ant; }tdetalles; typedef tdetalles *pnodoDE; typedef tdetalles *ListaDE; //*********************************************************** //************************nodos factura********************** //*********************************************************** typedef struct _Factura {char *codigo; char *cedula; ListaDE *descrip; double totalpagar; char *estado; struct _Factura *izq,*der; }tfactura; typedef tfactura *pnodoF; typedef tfactura *ListaF;
  • 10. Estas dos últimas estructuras, son para el manejo del registro de las ventas realizadas en la distribuidora, la estructura detalles permitirá crear una lista dinámica que almacenara los productos comprados en esa factura. La estructura factura formara los nodos del árbol binario. 4.5.2. Clases y su derivación. En este proyecto se instanciaron varias clases; todas ellas derivadas de una sala clase abstracta denominada Producto. De esta se derivan las clases Media, Litro, Galón, Bidón. Y tenemos un ultima derivación de la clase Media, de la cual se desprende las clases Funda y Botella. El esquema seria el siguiente: En cuanto al manejo de estas clases, se emplean en varias de ellas el polimorfismo, así como la abstracción de clases en la superclase Producto. Otra característica empleada en estas es la herencia simple como lo observamos en el esquema anterior. Producto BidónGalónLitro Media BotellaFunda
  • 11. V. Conclusión  Se concluye que el lenguaje de programación c++, es un lenguaje muy versátil aunque anticuado; pero no se puede negar su importancia dentro del software actual; ya que la gran mayoría de ellos tienen como base la programación en lenguaje c.  Los conceptos aprendidos en este lenguaje, servirán como base a futuro, pues estos mismos conceptos se aplican en software de desarrollo más actuales tales como Java.
  • 12. VI. Recomendación:  Al ser uno de los lenguajes base para la ingeniería en sistemas informáticos, se recomienda enseñar este lenguaje de manera transversal con otros en donde se vean reflejados de manera más concreta los concepto aprendido tales como: la herencia y el polimorfismo.