Universidad Autónoma del Carmen Facultad de Ciencias de la Información Academia de Programación Programación Visual Manual de Prácticas de Laboratorio Elaborado por: M.C. Fernando Enrique Sánchez Martínez M.I. Jesús Alejandro Flores Hernández M.C. José Ángel Pérez Rejón Cursos que apoya: Programación Gráfica I (IDM) Programación Visual (ICO e ISC) Desarrollo de Aplicaciones con .NET 2015 CONTENIDO Introducción ................................................................................................................................................. 1 Sección 1. ...................................................................................................................................................... 2 Lectura 1. Programación Orientada a Objetos ......................................................................................... 2 Práctica 1. Programación orientada a objetos vs. Programación estructurada. ...................................... 6 Lectura 2. Estructura de una clase. .......................................................................................................... 7 Práctica 2. Uso del IDE. ............................................................................................................................. 9 Práctica 3. Definición de clases y objetos. Parte 1. ................................................................................ 11 Práctica 4. Definición de clases y objetos. Parte 2. ............................................................................... 12 Sección 2. Manejo de Componentes. ......................................................................................................... 14 Práctica 5. Agenda Telefónica. ............................................................................................................... 14 Práctica 6. Calculadora. .......................................................................................................................... 15 Sección 3. Desarrollo de una aplicación integradora de POO. ................................................................... 16 Práctica 7. Proyecto integrador 1. .......................................................................................................... 16 Práctica 8. Proyecto integrador 2. .......................................................................................................... 17 Práctica 9. Proyecto integrador 3. .......................................................................................................... 18 Bibliografía.................................................................................................................................................. 19 INTRODUCCIÓN La presente obra tiene como objetivo apoyar el curso de Programación Visual ofertado a los alumnos de los programas educativos de Ingeniería en Computación e Ingeniería en Sistemas Computacionales; Desarrollo de Aplicaciones con .NET que se ofrece como Optativo; al igual, que a los alumnos de la Ingeniería en Diseño Multimedia que cursan Programación Gráfica I de la Facultad de Ciencias de la Información. El manual de prácticas se encuentra estructurado en tres secciones. Las dos primeras contemplan los aspectos teóricos y prácticos de los fundamentos de la programación orientada a objetos. La segunda sección propone el desarrollo de un proyecto integral que deberá estar basado en una necesidad real. La primera sección propone dos lecturas y el desarrollo de cuatro actividades. En la segunda, por no contener un alto contenido conceptual, será el profesor quién mediante ejemplos deberá presentar a los alumnos las características de los componentes visuales propios del lenguaje de programación. Por último, en la tercera sección, se definen los pasos para completar en proyectos integrales. Para este manual se utilizó el lenguaje de programación C# integrado en la suite de Visual Studio .NET; sin embargo, tiene una estructura semejante a C++ y Java. Programación Visual – Manual de Prácticas de Laboratorio Página 1 SECCIÓN 1. LECTURA 1. PROGRAMACIÓN ORIENTADA A OBJETOS El paradigma de Programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación. Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar. La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO. Conceptos clave Objeto. Comunicación entre objetos: mensajes. Clases. Herencia. Polimorfismo. ¿Qué es la Programación Orientada a Objetos (POO)? Booch define la POO como: Un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia a una clase, y cuyas clases son todas miembros de una jerarquía de clases unidas mediante relaciones de herencia. Existen tres partes importantes en la definición: la programación orientada a objetos 1) utiliza objetos, no algoritmos, como bloques de construcción lógicos Programación Visual – Manual de Prácticas de Laboratorio Página 2 (jerarquía de objetos); 2) cada objeto es una instancia de una clase, y 3) las clases se relacionan unas con otras por medio de relaciones de herencia. El objeto En programación convencional los programas se dividen en dos componentes: procedimientos y datos. Este método permite empaquetar código de programa en procedimientos, pero ¿Qué sucede con los datos? Las estructuras de datos utilizadas en programación son globales o se pasan como parámetros. En esencia los datos se tratan separadamente de los procedimientos. En POO un programa se divide en componentes que contienen procedimientos y datos. Cada componente se considera un objeto. Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos de un objeto se les conoce como miembros o atributos; las funciones que operan sobre los datos se denominan métodos (en C++ también se llaman funciones miembro) y los datos se denominan miembros datos. En C++ un programa consta de objetos. Los objetos de un programa se comunican entre sí mediante el paso o envío de mensajes (acciones que debe ejecutar el objeto). En POO los objetos pueden se cualquier entidad del mundo real: Objetos físicos o automóviles en una simulación de tráfico o aviones en un sistema de control de tráfico aéreo o animales mamíferos, etc Elementos de interfaces gráficos de usuarios o ventanas o iconos o menús o ratones Estructuras de datos o arrays o pilas o árboles binarios Tipos de datos definidos por el usuario o números complejos o hora del día Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. Los datos se denominan miembros dato o atributos y las funciones métodos o funciones miembro. Los datos y las funciones se encapsulan en una única entidad. Los datos o atributos están ocultos y sólo mediante los métodos es posible acceder a ellos. Programación Visual – Manual de Prácticas de Laboratorio Página 3 Nombre del objeto Métodos Datos V Coad/Yourdon Métodos Nombre del objeto Variables Taylor Nombre Atributos Métodos Booch OMT Notaciones Gráficas de Objetos Datos operaciones y Ejemplo Coche 1 Placa Marca Modelo Precio Año_compra Calcular_Precio_Actual En resumen: Atributos: Datos o variables que caracterizan el estado de un objeto. Métodos: Procedimientos o acciones que cambian el estado del objeto. Programación Visual – Manual de Prácticas de Laboratorio Página 4 Encapsulación El objeto retiene cierta información y sabe cómo realizar ciertas operaciones. La encapsulación de operaciones e información es muy importante. Los métodos de un objeto solo pueden manipular directamente datos asociados con ese objeto. Dicha encapsulación es la propiedad que permite incluir en una sola entidad (objeto) la información (atributos) y las operaciones (métodos o funciones) que operan sobre esa información. Métodos Atributos y/o métodos Sección privada Sección pública Métodos y mensajes Los objetos pueden ser activados mediante la recepción de mensajes. Un mensaje es simplemente una petición para que un objeto se comporte de una determinada manera, ejecutando uno de sus métodos. La técnica de enviar mensajes se conoce como paso de mensajes. Estructuralmente un mensaje consta de tres partes: la identidad del objeto receptor la función miembro del receptor cuya ejecución se ha solicitado cualquier otra información adicional que el receptor pueda necesitar para ejecutar el método requerido (parámetros). En C++ y Java, la notación utilizada es nombre_del_objeto.función_miembro(); Ejemplo: Se tiene un objeto o1 con los siguientes atributos: nombre_alumno y curso y con los métodos: leer_nombre e imprimir. Si el objeto o1 recibe el mensaje imprimir, esto se expresa: o1.imprimir(); La sentencia anterior se lee: "enviar mensaje imprimir al objeto o1". El objeto o1 reacciona al mensaje ejecutando método de igual nombre que el mensaje. El mensaje puede llevar parámetros: o1.leer_nombre("Pedro Pérez"); Programación Visual – Manual de Prácticas de Laboratorio Página 5 Sin los mensajes los objetos que se definan no podrán comunicarse con otros objetos. Desde un punto de vista convencional, el paso de mensajes no es más que el sinónimo de llamada a una función. Clases Una clase es la descripción de un conjunto de objetos; consta de métodos y atributos que resumen características comunes de un conjunto de objetos. Se pueden definir muchos objetos de la misma clase. Dicho de otro modo, una clase es la declaración de un tipo de objeto. Las clases son similares a los tipos de datos y equivalen a modelos o plantillas que describen cómo se construyen ciertos tipos de objetos. Cada vez que se construye un objeto a partir de una clase estamos creando lo que se llama una instancia de esa clase. Por consiguiente, los objetos no son más que instancias de una clase. Una instancia es una variable de tipo objeto. En general, instancia de una clase y objeto son términos intercambiables. Programa Orientada a Objetos Un programa orientado a objetos es una colección de clases. Necesitará una función principal que cree objetos y comience la ejecución mediante la invocación de sus métodos. Esta organización conduce a separar partes diferentes de una aplicación en distintos archivos. La idea consiste en poner la descripción de la clase para cada una de ellas en un archivo separado. La función principal también se pone en un archivo independiente. El compilador ensamblará el programa completo a partir de los archivos independientes en una única unidad. En realidad, cuando se ejecuta un programa orientado a objetos, ocurren tres acciones: 1. Se crean los objetos cuando se necesitan 2. Los mensajes se envían desde unos objetos y se reciben en otros 3. Se borran los objetos cuando ya no son necesarios y se recupera la memoria ocupada por ellos PRÁCTICA 1. PROGRAMACIÓN ORIENTADA A OBJETOS VS. PROGRAMACIÓN ESTRUCTURADA. Objetivo Analizar el contraste conceptual y de técnicas de programación entre los dos paradigmas. Programación Visual – Manual de Prácticas de Laboratorio Página 6 Descripción Para esta actividad el alumno deberá investigar las características de ambos paradigmas y realizar un cuadro comparativo. Procedimiento 1. Analizar las características de la programación orientada a objetos en la Lectura 1. 2. Investigar las características de la programación estructurada. 3. Diseñar un cuadro comparativo que permita identificar las similitudes y diferencias entre ambos paradigmas de programación. Considerar las ventajas y desventajas de trabajar en uno u otro paradigma. Materiales La actividad deberá ser entregada en material impreso en la clase correspondiente. LECTURA 2. ESTRUCTURA DE UNA CLASE. En C#, una clase es un tipo de dato muy eficaz. Como las estructuras, las clases definen los datos y el comportamiento del tipo de datos. Los programadores pueden crear objetos que son instancias de una clase. A diferencia de las estructuras, las clases admiten herencia, que es una parte fundamental de la programación orientada a objetos. Declarar clases Las clases se definen mediante la palabra clave class, como se muestra en el ejemplo siguiente: C# public class Customer { //Fields, properties, methods and events go here... } El nivel de acceso precede a la palabra clave class. En este caso, se utiliza public, que significa que cualquiera puede crear objetos a partir de esta clase. El nombre de la clase sigue a la palabra clave class. El resto de la definición es el cuerpo de clase, donde se definen el comportamiento y los datos. Los campos, propiedades, métodos y eventos de una clase se conocen colectivamente como miembros de clase. Programación Visual – Manual de Prácticas de Laboratorio Página 7 Crear objetos Aunque se utilizan a veces de forma intercambiable, una clase y un objeto son cosas diferentes. Una clase define un tipo de objeto, pero no es propiamente un objeto. Un objeto es una entidad concreta basada en una clase y, a veces, se denomina instancia de una clase. Los objetos se pueden crear con la palabra clave new seguida del nombre de la clase en la que se basará el objeto, de la manera siguiente: C# Customer object1 = new Customer(); Cuando se crea una instancia de una clase, una referencia al objeto se vuelve a pasar al programador. En el ejemplo anterior, object1 es una referencia a un objeto basado en Customer. Esta referencia hace referencia el nuevo objeto, pero no contiene los datos del propio objeto. De hecho, se puede crear una referencia a objeto sin crear un objeto: C# Customer object2; No se recomienda la creación de referencias a objetos como ésta, que no hace referencia a un objeto, porque al intentar el acceso a un objeto a través de esa referencia se producirá un error en tiempo de ejecución. Sin embargo, este tipo de referencia se puede crear para hacer referencia a un objeto, ya sea creando un nuevo objeto o asignándola a un objeto existente, de la forma siguiente: C# Customer object3 = new Customer(); Customer object4 = object3; Este código crea dos referencias a objeto que se refieren al mismo objeto. Por consiguiente, los cambios realizados en el objeto a través de object3 se reflejarán en los usos posteriores de object4. El hecho de que las clases se conozcan como tipos de referencia se debe a que se hace referencia a los objetos basados en clases por referencia. Ejemplo En el ejemplo siguiente, se define una clase pública que contiene un campo único, un método y un método especial denominado constructor. Luego se crean instancias de la clase con la palabra clave new. C# public class Person { // Field public string name; Programación Visual – Manual de Prácticas de Laboratorio Página 8 // Constructor public Person() { name = "unknown"; } // Method public void SetName(string newName) { name = newName; } } class TestPerson { static void Main() { Person person1 = new Person(); System.Console.WriteLine(person1.name); person1.SetName("John Smith"); System.Console.WriteLine(person1.name); } } Resultado unknown John Smith PRÁCTICA 2. USO DEL IDE. Objetivo Utilizar el ambiente de programación del Visual Studio .NET. Descripción Implementar en Visual Studio .NET el ejemplo incluido en esta actividad y compilarlo. Procedimiento 1. Crear un proyecto de aplicación en Visual Studio .NET con lenguaje C# con el nombre de EjemploCocheApp. 2. Agregar al proyecto una clase llamada Coche. Programación Visual – Manual de Prácticas de Laboratorio Página 9 class Coche { protected double velocidad=0; public string Marca; public string Modelo; public string Color; public string NumBastidor; public Coche(string marca, string modelo, string color, string numbastidor) { this.Marca=marca; this.Modelo=modelo; this.Color=color; this.NumBastidor=numbastidor; } public double Velocidad { get { return this.velocidad; } } public void Acelerar(double cantidad) { // Aquí se le dice al motor que aumente las revoluciones pertinentes, y... Console.WriteLine("Incrementando la velocidad en {0} km/h", cantidad); this.velocidad += cantidad; } public void Girar(double cantidad) { // Aquí iría el código para girar Console.WriteLine("Girando el coche {0} grados", cantidad); } public void Frenar(double cantidad) { // Aquí se le dice a los frenos que actúen, y... Console.WriteLine("Reduciendo la velocidad en {0} cantidad); this.velocidad -= cantidad; } } km/h", 3. En el método Main implementar el siguiente código. class EjemploCocheApp { static void Main() { Coche MiCoche=new "Azul","1546876"); Coche("Peugeot", "306", Console.WriteLine("Los datos de mi coche son:"); Console.WriteLine("Marca: {0}", MiCoche.Marca); Console.WriteLine("Modelo: {0}", MiCoche.Modelo); Programación Visual – Manual de Prácticas de Laboratorio Página 10 Console.WriteLine("Color: {0}", MiCoche.Color); Console.WriteLine("Número de bastidor: MiCoche.NumBastidor); MiCoche.Acelerar(100); Console.WriteLine("La km/h",MiCoche.Velocidad); MiCoche.Frenar(75); Console.WriteLine("La km/h",MiCoche.Velocidad); {0}", velocidad actual es de {0} velocidad actual es de {0} MiCoche.Girar(45); } } 4. Compilar el programa y comprobar los resultados. Los datos de mi coche son los siguientes: Marca: Peugeot Modelo: 306 Color: Azul Número de bastidor: 1546876 Incrementando la velocidad en 100 km/h La velocidad actual es de 100 km/h Reduciendo la velocidad en 75 km/h La velocidad actual es de 25 km/h Girando el coche 45 grados Materiales Equipo de cómputo con Visual Studio .NET instalado. PRÁCTICA 3. DEFINICIÓN DE CLASES Y OBJETOS. PARTE 1. Objetivo Diseñar una clase que contemple los tres elementos: atributos, constructores y métodos. Descripción Un cliente requiere de una aplicación que le permita administrar su lista de contactos comerciales. Como primera solicitud define los datos que requiere organizar de cada uno de sus contactos: nombre, apellido paterno, apellido materno, teléfono, celular, nextel, email, empresa y puesto. Programación Visual – Manual de Prácticas de Laboratorio Página 11 Crear una clase que permita el almacenamiento y administración de los datos que integran a un contacto. Procedimiento 5. Crear una clase llamada Contacto que incluya los siguientes atributos: nombre, apellido paterno, apellido materno, teléfono, celular, nextel, email, empresa y puesto 6. Implementar un constructor que reciba todos los datos por parámetro. 7. Implementar el conjunto de métodos que reciban los datos de manera individual por parámetro (métodos “set”). 8. Implementar el conjunto de métodos que retornen los datos de manera individual (métodos “get”). 9. Implementar un método que retorne todos los datos del contacto como instancia de la clase Contacto. (Investigar como retornar objetos a través de un método). Materiales La clase deberá diseñarse en papel usando el lenguaje de programación C#. Deberá crearse la clase en Visual Studio .NET una vez aprobado por el profesor. PRÁCTICA 4. DEFINICIÓN DE CLASES Y OBJETOS. PARTE 2. Objetivo Implementar una clase que administre los procesos de ingreso, eliminación y modificaciones de una lista de contactos. Descripción En la actividad anterior se creó una clase llamada Contacto donde se integran los atributos y métodos que identifican y gestionan los procesos de un registro. En esta actividad se implementará una clase que incluya como atributo un vector de Contactos y que incluya los métodos que gestionen los procesos básicos de un sistema de información. Programación Visual – Manual de Prácticas de Laboratorio Página 12 Procedimiento 1. Investigar los métodos de la clase Vector. a. Como se declaran. b. Como se obtiene el tamaño del arreglo. c. Como se declaran arreglos de objetos. d. La clase Vector, sus métodos y como se utilizan. 2. Diferencia entre arreglo unidimensional y la clase Vector. 3. Al proyecto creado en la actividad anterior agregar una clase llamada Agenda. 4. En la clase Agenda, incluir un vector como atributo que almacene objetos de la clase Contacto. 5. La clase debe contener los métodos: a. Nuevo para agregar un nuevo contacto al vector, b. Editar para sustituir un contacto existente, c. Eliminar para borrar a un contacto del vector. Materiales La clase deberá diseñarse en papel usando el lenguaje de programación C#. Deberá crearse la clase en Visual Studio .NET una vez aprobado por el profesor. Programación Visual – Manual de Prácticas de Laboratorio Página 13 SECCIÓN 2. MANEJO DE COMPONENTES. PRÁCTICA 5. AGENDA TELEFÓNICA. Objetivo Implementar la interfaz gráfica de la agenda telefónica. Descripción Crear la interfaz gráfica de la aplicación donde el usuario pueda ingresar nuevos contactos a la agenda, visualizar los almacenados, editarlos y eliminarlos. Procedimiento 1. Crear una ventana principal donde se pueda seleccionar a un contacto y se desplieguen sus datos. 2. Incluir una barra de menús con la opción principal (Contactos) y como submenú las opciones Nuevo, Editar y Eliminar. 3. Integrar una barra de herramientas con las cuatro botones (Nuevo, Editar, Guardar y Eliminar) incluyendo imágenes. 4. El botón guardar debe estar deshabilitado. 5. Para agregar un nuevo contacto se debe abrir un cuadro de diálogo captura de los datos. 6. Para eliminar un contacto debe enviar un cuadro de diálogo que confirme la eliminación del contacto. 7. Se debe agregar un ComboBox que muestre todos los Apodos de los contactos y al seleccionar uno se deben desplegar todos los datos que le corresponden en la ventana principal. 8. Todos los componentes gráficos donde se muestran los datos del contacto seleccionado debes estar deshabilitados, para que no se puedan modificar. 9. Al presionar el botón de Editar se deben habilitar los componentes gráficos y también el botón de guardar, para que éste al ser presionado almacene los cambios. Materiales Equipo de cómputo con Visual Studio .NET instalado. Programación Visual – Manual de Prácticas de Laboratorio Página 14 PRÁCTICA 6. CALCULADORA. Objetivo Implementar una calculadora. Descripción Analizar el funcionamiento de una calculadora gráfica sencilla e implementar una con las funciones aritméticas básicas. Procedimiento 1. Analizar el funcionamiento de la calculadora Windows. 2. Crear un nuevo proyecto de Visual Studio .NET 3. Crear una ventana. 4. Incluir el cuadro de texto. 5. Integrar los botones. 6. Implementar funcionalidad a los números. 7. Implementar funcionalidad a los operadores. de Materiales Equipo de cómputo con Visual Studio .NET instalado. Programación Visual – Manual de Prácticas de Laboratorio Página 15 SECCIÓN 3. DESARROLLO DE UNA APLICACIÓN INTEGRADORA DE POO. PRÁCTICA 7. PROYECTO INTEGRADOR 1. Objetivo Implementar una aplicación basada en dos clases, donde el alumno debe aplicar la comunicación entre objetos. Descripción Implementar el proyecto de un banco, para el manejo de una cuenta única que permita realizar depósitos y retiros; permitiendo mantener actualizado el saldo. Los alumnos deberán seguir el procedimiento en la secuencia señalada en un lenguaje orientado a objetos. El proyecto deberá realizarse en equipo. Procedimiento 1. 2. 3. 4. 5. 6. 7. 8. 10. 11. Crear una clase llamada Cuenta con los siguientes atributos: número de cuenta, nombre del cliente y saldo. Agregar los métodos set y get correspondientes a la clase Cuenta. Incluir en la clase Cuenta un método llamado “deposito” que reciba por un monto por parámetro y se sume al saldo. El método debe retornar el saldo final. Incluir en la clase Cuenta un método llamado “retiro” que reciba un monto por parámetro y lo reste al saldo en caso de contar con recursos suficientes. El método debe retornar el saldo final si se aplicó el retiro y en caso contrario retornar -1 (este valor servirá para reconocer cuando se aplicó o no el retiro). Crear una clase llamada Operaciones con 1 objeto de la clase Cuenta como atributo. En la clase Operaciones agregar un método llamado “nuevaCuenta” que solicite los datos al usuario y los agregue al objeto de la clase Cuenta. En la misma clase, implementar el método “nuevoDeposito” que solicitará al usuario el monto que desea depositar y se deberá hacer una llamada al método “deposito” de la clase Cuenta para completar la operación y por ultimo mostrará al usuario el nuevo saldo del cliente. En la misma clase, implementar el método “nuevoRetiro” que solicitará al usuario el monto que desea retirar y se deberá hacer una llamada al método “retiro” de la clase Cuenta para completar la operación y por ultimo mostrará al usuario el nuevo saldo del cliente o en su caso indicar que no se pudo realizar la operación por falta de fondos. En la clase Operaciones, desarrollar el método “consulta” que mostrará En la función principal, Implementar el menú de opciones: nuevo cliente, consulta, depósito, retiro y salir con sus respectivas llamadas a los métodos de la clase Operaciones. Materiales Equipo de cómputo con Visual Studio .NET instalado, Netbeans o C++. Programación Visual – Manual de Prácticas de Laboratorio Página 16 PRÁCTICA 8. PROYECTO INTEGRADOR 2. Implementar una aplicación basada en dos clases, donde el alumno debe aplicar la comunicación entre objetos. Descripción Implementar el proyecto de un banco, para el manejo de una cuenta única que permita realizar depósitos y retiros; permitiendo mantener actualizado el saldo. Los alumnos deberán seguir el procedimiento en la secuencia señalada en un lenguaje orientado a objetos. El proyecto deberá realizarse en equipo. Procedimiento 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Crear una clase llamada Cliente con los siguientes atributos: Número de cuenta, nombre del cliente, límite de crédito y saldo. Agregar un constructor sin parámetros que inicialice el saldo en 0. Agregar los métodos set y get correspondientes a la clase Cliente. Incluir en la clase Cliente un método llamado “compra” que reciba el monto de la compra por parámetro e incremente el saldo, siempre y cuando no sobre pase el límite de crédito, en caso de hacerlo la compra no debe registrarse y se debe retornar un -1. El método debe retornar el saldo final. Incluir en la clase Cliente un método llamado “abono” que reciba un monto por parámetro y lo reste al saldo. El método debe retornar el saldo final. Crear una clase llamada Tienda con 1 objeto de la clase Cliente como atributo. En la clase Tienda agregar un método llamado “nuevoCliente” que solicite los datos al usuario y los agregue al objeto de la clase Cliente. En la misma clase, implementar el método “nuevaCompra”, donde el usuario ingresará el monto de la compra, actualizar el saldo del Cliente y mostrar el monto al que asciende la deuda o en su caso indicar que no se puede aplicar la compra porque excede del límite de crédito. En la misma clase, implementar el método “nuevoPago” que solicitará al usuario el monto que desea abonar a la cuenta. Se deberá mostrar el saldo después de aplicar el pago. En la clase Tienda, desarrollar el método “consulta” que mostrará los datos actuales del Cliente. En la función principal, implementar el menú de opciones: nuevo cliente, consulta, compra, pago y salir con sus respectivas llamadas a los métodos de la clase Tienda. Materiales Equipo de cómputo con Visual Studio .NET instalado, Netbeans o C++. Programación Visual – Manual de Prácticas de Laboratorio Página 17 PRÁCTICA 9. PROYECTO INTEGRADOR 3. Objetivo Implementar una aplicación real donde el alumno aplique los conocimientos adquiridos en el curso. Descripción Definir, diseñar e implementar un proyecto integrador. Los alumnos en equipo definirán un proyecto real, identificando las necesidades de información, diseñando la interfaz, las clases e implementado el mismo en Visual Studio .NET. El proyecto deberá realizarse en equipo. Procedimiento 1. En equipo, los alumnos definirán el proyecto, su objetivo y alcances. 2. Se redactará la especificación de requisitos del proyecto con base a las necesidades de información. 3. Se diseñarán las clases de entidad y control. 4. Se diseñará la interfaz en papel o software de edición de imágenes. 5. Implementación del proyecto en C#. 6. Implementación de captura de errores. 7. Pruebas de la aplicación. 8. Integración de la documentación técnica 9. Presentación formalmente el proyecto. Materiales Equipo de cómputo con Visual Studio .NET instalado, Netbeans o C++. Programación Visual – Manual de Prácticas de Laboratorio Página 18 BIBLIOGRAFÍA Básicas: 1. Joyanes Aguilar, Luis. Fundamentos de la programación. 1ª. Edición. McGraw-Hill / Interamericana de España, S.A. 2008. ISBN: 9788448161118. 2. Leobardo López Román, “Metodología de la programación orientada a objetos”, 1ª edición, Alfaomega Grupo Editor México, ISBN: 970-15-1173-5, ASIN: B0038ALDJQ, 2006. 3. Carlos Alberto Vanegas, “Lenguaje de Programación I Programación Orientada a Objetos”, UNIVERSIDAD DISTRITAL, ISBN-10: 9588247918, ISBN-13: 978-9588247915, ASIN: B0038ASXS0, 2007. 4. Ceballos, Francisco Javier. C/C++ Curso de Programación. Alfaomega Ra-Ma. 2002. 5. López Román, Leobardo. Metodología de la programación orientada a objetos. Alfaomega Ra-Ma. 2006. 6. Peñaloza Romero, Ernesto. Fundamentos de programación C/C++. Alfaomega Ra-Ma. 2006 7. Ceballos, Francisco Javier. Programación orientada a objetos con C++. Alfaomega Ra-Ma. 2008. 8. DALE, Programación y resolución de problemas con C++. McGraw-Hill. 2008. 9. Barnes David J., Kölling Michael, “Programación Orientada a Objetos con Java: Una Introducción Practica usando Blue J”, 3ª edición, Pearson Education, ISBN-10: 8483223503, ISBN-13: 9788483223505, 2007. 10. E. ET AL. Pimentel, “Programación Orientada A Objetos con Java”, Ediciones Paraninfo, ISBN-10: 8497325729, ISBN-13: 978-8497325721, 2007. 11. Terán Jorge, “Resolviendo problemas con el lenguaje de programación C++”, CodeRoad SRL, 2011. Web: 1. La Web del Programador: Comunidad de Programadores: http://www.lawebdelprogramador.com 2. Pagina de recursos de UML http://www.uml.org 3. Tutor java nivel básico: http://www.programacion.com/articulo/tutorjava_nivel_basico_97/1 4. Conceptos básicos de la POO (en C++): http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.htm 5. Programación Orientada a Objetos Conceptos de POO http://www.ii.uam.es/~castells/docencia/poo/1-conceptos.pdf Programación Visual – Manual de Prácticas de Laboratorio Página 19