Paradigma:
Ejemplo o modelo de algo.
Paradigma de programación orientado a objetos (POO):
Modelo definido a través de comunidades de objetos.
Instrucciones de control:
Variaciones o alteraciones a la secuencia normal de ejecución de un programa.
FPO-ES
El alumno codificará algoritmos computacionales a través del paradigma de programación orientado a objetos para resolver problemas del ámbito cotidiano.
Desarrollar soluciones innovadoras de integración de tecnologías de la información mediante metodologías de desarrollo de software, diseño de base de datos, seguridad de la información y administración de proyectos; con base en los estándares aplicables para atender las áreas de oportunidad, resolver las necesidades y optimizar los procesos y recursos de la organización.
En la plataforma Moodle se habilitará una liga para subir las tareas, prácticas y evaluaciones, con un tiempo determinado.
HORA | LUNES | MARTES | MIÉRCOLES | JUEVES | VIERNES |
---|---|---|---|---|---|
7:30-8:20 | |||||
8:20-9:10 | FPO-ES 5A | ||||
9:10-10:00 | FPO-ES 5A | ||||
10:00-10:50 | FPO-ES 5A | FPO-ES 5B | |||
10:50-11:40 | FPO-ES 5A | FPO-ES 5B | |||
11:40-12:30 | FPO-ES 5B | FPO-ES 5B | FPO-ES 5A | ||
12:30-13:20 | FPO-ES 5B | FPO-ES 5B | FPO-ES 5A | ||
13:20-14:10 |
Paul J. Deitel, Harvey M. Deitel 2012 Cómo programar en Java Mexico Pearson Educaciòn 9786073211505
Harvey M. Deitel, Paul J. Deitel 2013 Còmo Programar en C/C++ y Java
Madrid, España Pearson Educaciòn 9702605318
Llorens Agost, María Luisa Gómez Adrian, Jon Ander Galiano Ronda, Isabel Remedios Herrero Cuco, Carlos Marqués Hernández, Francisco Casanova Faus, Assumpció González Mollá, Jorge Moltó Martínez, Germán Martínez Hinarejos, Carlos David Prieto Saez, Natividad Piris Ruano, Francisco Javier 2016 Empezar A Programar Usando Java España Editorial Universitat Politècnica de València 9788490485422Pablo Sznajdleder 2017 Programación estructurada a fondo implementacion de algoritmos en C México Alfaomega Grupo Editor 9789873832284
Robert W. Sebesta 2012 Concepts Of Programming Languages United States of America Pearson Education 9780131395312
Objeto:
Instancia de una clase.
Instancia:
Objeto que derive de otro. Excepto la clase Object.
Clase:
Plano para personalizar un tipo de dato. Sus miembros pueden ser: atributos, propiedades, métodos y eventos.
Atributos:
Variables internas y constantes.
Propiedades:
Características del objeto con get y set.
Métodos:
Acciones que realiza el objeto.
Eventos:
Notificaciones que se producen cuando se realiza una acción.
Constructor:
Método que inicializa un objeto.
TIPOS DE RELACIONES
Herencia:
Una clase hereda a otra. Para usar herencia es necesario que la clase base sea abstracta y contenga métodos abstractos.
Agregación:
Una clase se asocia con otra. Una clase fuerte se agrega con una débil. Un objeto préstamo tiene unos objetos pagos.
Asociación:
Una clase se asocia con otra. Un objeto alumno se asocia con objetos materias.
Implementación:
Una clase implementa de una interfaz. Los miembros declarados en la interfaz son implementados en una clase.
Composición:
Una clase se compone de otras clases. Un objeto carro se compone de objetos llantas, puertas, etc.
Generalización:
Es el definir una super clase, para que comparta los miembros en común a las subclases.
Extención:
Es un tipo de implementación pero indica herencia. Las subclases heredan o extienden de una superclase.
Realización:
Relación entre clases que contienen sus respectivos detalles de implementación. Relación entre la interfaz y la clase implementadora.
Dependencia
Cambio en estructura o comportamiento de clase afecta a otra. Cuando una clase contiene otra clase. Ejemplo: la relación entre forma y círculo es dependencia.
Elabora una aplicación en consola C# para una central de autobuses. En la aplicación debes considerar que en la central de autobuses se encuentran separadas por andenes, por los cuales las personas asienden a su autobús. Al llegar a la central, la persona debe seleccionar una agencia de viajes: Omnibus de México, Transportes del Norte, Estrella Blanca, etc. La persona compra su boleto y espera el momento para subir a su camión. Cada uno de ellos tiene diferentes camiones que salen a diferentes rutas. Los camiones tienen asientos que es donde van los pasajeros. Procedimiento: El cliente selecciona la agencia, después, proporciona hacia donde se dirige, la agencia le muestra las rutas disponibles, el cliente selecciona una ruta y de la ruta selecciona su asiento, después se registran sus datos y se imprime su boleto. Al consultar los asientos del camión deberá mostrar cuáles son los asientos disponibles y ocupados. De los camiones es importante registrar el nombre del chofer y su ayudante, así como las señoritas que ayudan en los servicios plus.
Elabora una aplicación de consola en C#, en donde registres a los docentes que van a presentar examen para ingresar a la SEP. En una biblioteca se cuenta con cinco laboratorios de los cuales cada laboratorio maneja 30 computadoras. Al ingresar a la biblioteca, cada docente se registra en la recepción con la asistente, en autómatico se le asigna un número, usuario y contraseña que corresponden a un laboratorio y a una máquina para la realización de su examen. Cuando el docente llega a su computadora, el responde su evaluación que consta de 4 partes, de las cuales dependen del tipo de nivel que van a presentar: preescolar, primaria, secundaria o bachillerato. Algunos docentes de secundaria y bachillerato deben presentar un segundo examen que corresponde a su taller o especialidad.
Da clic aquí y descarga las indicaciones de los ejercicios para realizarlos en C# console.
Clase Titular
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class Titular { //Atributos private string nombre; private int edad; //Propiedades public string Nombre { get { return nombre; } set { nombre = value; } } public int Edad { get { return edad; } set { edad = value; } } //Métodos public void MostrarInformacion() { Console.WriteLine("Nombre: {0}", Nombre); Console.WriteLine("Edad: {0}", Edad); } } }
Clase Cuenta
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class Cuenta { //Atributos private Titular propietario; private double cantidad; //Propiedades public Titular Propietario { get { return propietario; } set { propietario = value; } } public double Cantidad { get { return cantidad; } set { cantidad = value; } } //Constructores public Cuenta(Titular titular) { Propietario = titular; Cantidad = 0; } public Cuenta(Titular titular, double cantidad) { Propietario = titular; Cantidad = cantidad; } //Métodos public void MostrarInformacion() { Console.WriteLine("Datos del titular:"); Console.WriteLine("->Nombre: {0}", Propietario.Nombre); Console.WriteLine("->Edad: {0}", Propietario.Edad); Console.WriteLine("Datos de la cuenta:"); Console.WriteLine("->Cantidad: {0}", Cantidad); } public void Ingresar(double cantidad) { if (cantidad > 0) { Cantidad = Cantidad + cantidad; } } public void Retirar(double cantidad) { if (Cantidad < cantidad) { Cantidad = 0; } else { Cantidad = Cantidad - cantidad; } } } }
Clase Program
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class Program { static void Main(string[] args) { int _indice, _edad; string _nombre; double cantidad; Cuenta cuenta; Titular titular; Console.WriteLine("BIENVENIDO A HSTW BANCO"); Console.WriteLine("\nOpciones:"); Console.WriteLine("1. Crear Titular"); string opcion = Console.ReadLine(); switch (opcion) { case "1": Titular miTitular = new Titular(); Console.WriteLine("Ingresa el nombre del titular:"); miTitular.Nombre = Console.ReadLine(); Console.WriteLine("Ingresa la edad del titular:"); miTitular.Edad = int.Parse(Console.ReadLine()); //catalogoTitulares.AgregarTitular(miTitular); Console.WriteLine("¿Deseas crear una cuenta para el titular?"); opcion = Console.ReadLine(); switch (opcion) { case "si": Console.WriteLine("¿Deseas agregar una cantidad a la cuenta?"); opcion = Console.ReadLine(); if (opcion == "si") { Console.WriteLine("Ingrese la cantidad:"); cantidad = double.Parse(Console.ReadLine()); cuenta = new Cuenta(miTitular, cantidad); } else { cuenta = new Cuenta(miTitular); } //catalogoCuentas.AgregarCuenta(cuenta); Console.WriteLine("DATOS DE LA CUENTA CREADA:"); cuenta.MostrarInformacion(); opcion = ""; do { Console.WriteLine("Acciones de cuenta:"); Console.WriteLine("1. Ingresar dinero a cuenta"); Console.WriteLine("2. Retirnar dinero de cuenta"); Console.WriteLine("3. Salir"); opcion = Console.ReadLine(); if (opcion == "1") { Console.WriteLine("Ingrese la cantidad a ingresar:"); cantidad = double.Parse(Console.ReadLine()); cuenta.Ingresar(cantidad); } if (opcion == "2") { Console.WriteLine("Ingrese la cantidad a retirar:"); cantidad = double.Parse(Console.ReadLine()); cuenta.Retirar(cantidad); } cuenta.MostrarInformacion(); } while (opcion != "3"); break; default: break; } break; default: break; } } } }
Clase Titular
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class Titular { //Atributos private string nombre; private int edad; //Propiedades public string Nombre { get { return nombre; } set { nombre = value; } } public int Edad { get { return edad; } set { edad = value; } } //Métodos public void MostrarInformacion() { Console.WriteLine("Nombre: {0}", Nombre); Console.WriteLine("Edad: {0}", Edad); } } }
Clase Cuenta
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class Cuenta { //Atributos private Titular propietario; private double cantidad; //Propiedades public Titular Propietario { get { return propietario; } set { propietario = value; } } public double Cantidad { get { return cantidad; } set { cantidad = value; } } //Constructores public Cuenta(Titular titular) { Propietario = titular; Cantidad = 0; } public Cuenta(Titular titular, double cantidad) { Propietario = titular; Cantidad = cantidad; } //Métodos public void MostrarInformacion() { Console.WriteLine("Datos del titular:"); Console.WriteLine("->Nombre: {0}", Propietario.Nombre); Console.WriteLine("->Edad: {0}", Propietario.Edad); Console.WriteLine("Datos de la cuenta:"); Console.WriteLine("->Cantidad: {0}", Cantidad); } public void Ingresar(double cantidad) { if (cantidad > 0) { Cantidad = Cantidad + cantidad; } } public void Retirar(double cantidad) { if (Cantidad < cantidad) { Cantidad = 0; } else { Cantidad = Cantidad - cantidad; } } } }
Clase CatalogoTitular
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class CatalogoTitulares { private List< Titular > titular; private List< Titular > Titulares { get { return titular; } set { titular = value; } } public CatalogoTitulares() { Titulaes = new List< Titular >(); } public void MostrarCatalogo() { foreach (var titular in Titulares) { Console.WriteLine("Nombre: {0}", titular.Nombre); Console.WriteLine("Edad: {1}", titular.Edad); } } public void AgregarTitular(Titular titular) { Titulares.Add(titular); Console.WriteLine("El titular ha sido agregado..."); } public void ModificarTitular(int indice, string nombre, int edad) { Titulares[indice].Nombre = nombre; Titulares[indice].Edad = edad; Console.WriteLine("El titular ha sido modificado..."); } public void EliminarTitular(int indice) { Titulares.RemoveAt(indice); Console.WriteLine("El titular ha sido eliminado..."); } public Titular BuscarTitular(int indice) { return Titulares[indice]; } } }
Clase CatalogoCuenta
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class CatalogoCuentas { private List< Cuenta > cuentas; private List< Cuenta > Cuentas { get { return cuentas; } set { cuentas = value; } } public CatalogoCuentas() { Cuentas = new List< Cuenta >(); } public void MostrarCuentas() { foreach (var cuenta in Cuentas) { Console.WriteLine("Nombre del propietario: {0}", cuenta.Propietario.Nombre); Console.WriteLine("Edad del propietario: {0}", cuenta.Propietario.Edad); Console.WriteLine("Cantidad: {0}", cuenta.Cantidad); } } public void AgregarCuenta(Cuenta cuenta) { Cuentas.Add(cuenta); Console.WriteLine("La cuenta ha sido agregada..."); } public void ModificarCuenta(int indice, Titular titular, double cantidad) { Cuentas[indice].Propietario = titular; Cuentas[indice].Cantidad = cantidad; Console.WriteLine("La cuenta ha sido modificada..."); } public void EliminarCuenta(int indice) { Cuentas.RemoveAt(indice); Console.WriteLine("La cuenta ha sido eliminada..."); } } }
Clase Program
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio1_Tema1_FPOO_5A { class Program { static void Main(string[] args) { int _indice, _edad; string _nombre; double cantidad; CatalogoTitulares catalogoTitulares = new CatalogoTitulares(); CatalogoCuentas catalogoCuentas = new CatalogoCuentas(); Cuenta cuenta; Titular titular; Console.WriteLine("BIENVENIDO A HSTW BANCO"); Console.WriteLine("\nOpciones:"); Console.WriteLine("1. Crear Titular"); Console.WriteLine("2. Crear Cuenta"); Console.WriteLine("\nOpciones de Catálogo de Titulares"); Console.WriteLine("3. Mostrar Catálogo de Titulares"); Console.WriteLine("4. Modificar Titular"); Console.WriteLine("5. Eliminar Titular"); Console.WriteLine("\nOpciones de Catálogo de Cuentas"); Console.WriteLine("6. Mostrar Catálogo de Cuentas"); Console.WriteLine("7. Modificar Cuenta"); Console.WriteLine("8. Eliminar Cuenta"); string opcion = Console.ReadLine(); switch (opcion) { case "1": Titular miTitular = new Titular(); Console.WriteLine("Ingresa el nombre del titular:"); miTitular.Nombre = Console.ReadLine(); Console.WriteLine("Ingresa la edad del titular:"); miTitular.Edad = int.Parse(Console.ReadLine()); catalogoTitulares.AgregarTitular(miTitular); Console.WriteLine("¿Deseas crear una cuenta para el titular?"); opcion = Console.ReadLine(); switch (opcion) { case "si": Console.WriteLine("¿Deseas agregar una cantidad a la cuenta?"); opcion = Console.ReadLine(); if (opcion == "si") { Console.WriteLine("Ingrese la cantidad:"); cantidad = double.Parse(Console.ReadLine()); cuenta = new Cuenta(miTitular, cantidad); } else { cuenta = new Cuenta(miTitular); } catalogoCuentas.AgregarCuenta(cuenta); Console.WriteLine("DATOS DE LA CUENTA CREADA:"); cuenta.MostrarInformacion(); opcion = ""; do { Console.WriteLine("Acciones de cuenta:"); Console.WriteLine("1. Ingresar dinero a cuenta"); Console.WriteLine("2. Retirnar dinero de cuenta"); Console.WriteLine("3. Salir"); opcion = Console.ReadLine(); if (opcion == "1") { Console.WriteLine("Ingrese la cantidad a ingresar:"); cantidad = double.Parse(Console.ReadLine()); cuenta.Ingresar(cantidad); } if (opcion == "2") { Console.WriteLine("Ingrese la cantidad a retirar:"); cantidad = double.Parse(Console.ReadLine()); cuenta.Retirar(cantidad); } cuenta.MostrarInformacion(); } while (opcion != "3"); break; default: break; } break; case "2": catalogoTitulares.MostrarCatalogo(); Console.WriteLine("¿Cuál titular deseas seleccionar?:"); _indice = int.Parse(Console.ReadLine()); Titular titular_seleccionado = catalogoTitulares.BuscarTitular(_indice); cuenta = new Cuenta(titular_seleccionado); Console.WriteLine("¿Deseas asignar una cantidad a la cuenta?:"); opcion = Console.ReadLine(); if (opcion == "si") { Console.WriteLine("Ingresa la cantidad:"); cantidad = double.Parse(Console.ReadLine()); cuenta.Cantidad = cantidad; } catalogoCuentas.AgregarCuenta(cuenta); break; case "3": catalogoTitulares.MostrarCatalogo(); break; case "4": Console.WriteLine("Ingrese el índice:"); _indice = int.Parse(Console.ReadLine()); Console.WriteLine("Ingrese el nombre:"); _nombre = Console.ReadLine(); Console.WriteLine("Ingrese la edad:"); _edad = int.Parse(Console.ReadLine()); catalogoTitulares.ModificarTitular(_indice, _nombre, _edad); break; case "5": Console.WriteLine("Mencione el índice del titular ha eliminar:"); _indice = int.Parse(Console.ReadLine()); catalogoTitulares.EliminarTitular(_indice); break; case "6": catalogoCuentas.MostrarCuentas(); break; case "7": titular = new Titular(); Console.WriteLine("Ingrese el índice:"); _indice = int.Parse(Console.ReadLine()); Console.WriteLine("Ingrese el nombre:"); titular.Nombre = Console.ReadLine(); Console.WriteLine("Ingrese la edad:"); titular.Edad = int.Parse(Console.ReadLine()); Console.WriteLine("Ingrese la cantidad:"); cantidad = double.Parse(Console.ReadLine()); _indice = int.Parse(Console.ReadLine()); catalogoCuentas.ModificarCuenta(_indice, titular, cantidad); break; case "8": Console.WriteLine("Ingrese el índice:"); _indice = int.Parse(Console.ReadLine()); catalogoCuentas.EliminarCuenta(_indice); break; default: break; } } } }
Da clic aquí para conocer los tipos de polimorfismo.
INDICACIONES:Realiza los siguientes ejercicios en C#:
Crea una clase llamada Sumadora en donde implementes cuatro métodos llamados SumarValores(), en donde el primer método debe sumar dos valores, el segundo debe sumar cuatro valores, el tercero debe sumar ocho valores y el cuarto debe sumar todos los valores recibidos en una lista de valores. Se crea la instancia de la clase Sumadora en el método Main y se mandan llamar los métodos.
Crea una clase llamada Carro, Camioneta, Camion, en donde implementes los métodos Encender(), Apagar(), Descripcion() de la interface IMotor, en cada clase el motor debe de encender, apagar y describir información diferente. Se crea las instancias de las clases en el método Main y se mandan llamar los métodos.
Crea una superclase abstracta llamada Jugador con los métodos abstractos MostrarInformacion(), Jugar(), Posicion(). Crea las subclases Futbolista, Basquetbolista, Tenista quienes heredarán los métodos de la superclase Jugador. Cada uno de los métodos deberán mostrar información diferente utilizando Console.WriteLine(). Crea las instancias de las clases en el método Main y manda llamar sus métodos.
Da clic aquí para ver el ejemplo sobre encapsulamiento en C#.
INDICACIONES:Realiza los siguientes ejercicios en C#:
Crea una superclase llamada Vehiculo en la que declares los siguientes atributos y propiedades: Llanta, Chasis, Palanca, Volante, Puertas, Vidrios. Declara los métodos: MostrarInformacion(), Encender(), Apagar(), DarPrimera(), DarSegunda(), Detener(), Reversa(). De cada propiedad crear su respectiva clase. Crear las subclases Vocho, Pointer, Jetta y que hereden de la superclase Vehiculo. Declarar las propiedades públicas. Cada método debe llevar un Console.WriteLine(). Crea las instancias de las subclases y mándalas llamar en el método Main.
Crea una clase llamada MaquinitaNintendo, en la cual declara una propiedad pública llamada Pantalla y otra propiedad privada llamada CantidadDinero. Para poder utilizar la CantidadDinero es necesario declarar un método setCantidadDinero para registrar el dinero que los usuarios van echandole a la máquina. Los métodos de la clase MaquinitaNintendo son: Encender(), Apagar(), IniciarJuego(), PausarJuego(), ReiniciarJuego(), SeleccionarJuego(). La clase MaquinitaNintendo se compone de muchos Juegos que contienen nombre y descripción. Cada método debe llevar un Console.WriteLine(). Crea las instancias de la clase y manda llamar sus métodos en el método Main.
Crea una jerarquía de clases: Animal, Mono, Gorila, Macaco. En la cual declares sus propiedades y métodos. Debes declarar propiedades públicas en la superclase como: Nombre, Edad, Sexo, propiedades privadas como: Color y Tamaño, y propiedades protegidas como: Ojos, Manos, Colmillos. Recuerda que para acceder a las propiedades privadas debes hacerlo a través de los métodos get y set. Para las propiedades protegidas debe ser sobre su jerarquía. Cada método debe llevar un Console.WriteLine(). Crea las instancias de la clase y manda llamar sus métodos en el método Main.
Realiza los siguientes ejercicios en C#:
Elabora un programa en donde crees una superclase llamada Robot. Sus características son, Nombre, Modelo, Tamaño, Armaduras y Armas. Las acciones del Robot son: Caminar(abstracto), Disparar(no abstracto y virtual) y MostrarInformación(no abstracto). Después crea tres subclases llamadas: RobotVigilante, RobotMilitar y RobotCasero. El método disparar lleva un Console.WriteLine que indica que dispara.
En la superclase Robot, se debe declarar cuatro tipo de constructores: el primer constructor debe llevar valores por defecto, el segundo solo va recibir como parametro el Nombre, Modelo y Tamaño, y el tercero debe recibir todos las características como parametros.
Como el método Disparar es virtual, debes de sobreescribirlo en cada subclase para hacer que cada robot dispare de manera distinta, utilizando en los métodos base.Disparar().
INTRODUCCIÓN: En el siguiente documento encontrarás información acerca de la visión general de UML, donde se describe en qué es esencial en la construcción de software, los diagramas qué utiliza, sus inconvenientes y algunos ejemplos de diagramas. Da clic aquí para acceder al documento.
ACTIVIDAD 2.1: Responde en tu cuaderno las siguientes preguntas y súbelas al moodle:
Un modelo del dominio es una representación visual de las clases conceptuales u objetos del mundo real en un dominio de interés. También se les denomina modelos conceptuales modelo de objetos del dominio y modelos de objetos de análisis. Este artefacto se crea en la disciplina del modelado del negocio. Para diseñar el modelo del dominio es necesario seguir los siguientes pasos:
ACTIVIDAD 2.2: Elabora el modelo del dominio del siguiente problema llamado "RESCATANDO A LA REINA"
Elabora un videjuego en donde el usuario tenga la posibilidad de seleccionar a cuatro de los siguientes personajes:
ACTIVIDAD 2.3 Investiga los tipos de modelados del comportamiento, estructural y arquitectónico.
Existen dos tipos de casos de uso:
ACTIVIDAD 2.4 Elabora los casos de uso breves siguiendo los requisitos de la ACTIVIDAD 2.2
ACTIVIDAD 2.5 Elabora los casos de uso informales siguiendo los requisitos de la ACTIVIDAD 2.2
ACTIVIDAD 2.6 Elabora los casos de uso completos siguiendo los requisitos de la ACTIVIDAD 2.2
ACTIVIDAD 2.7 Elabora los diagramas de caso de uso siguiendo los requisitos de la ACTIVIDAD 2.2
ACTIVIDAD 2.8 Elabora el diagrama completo de caso de uso siguiendo los requisitos de la ACTIVIDAD 2.2
INDICACIONES: En la siguiente presentación encontrarás información sobre los diagramas de estados y diagramas de actividad. Da clic aquí para acceder a la presentación.
ACTIVIDAD 2.9 Elabora el diagrama de estados de una laptop.
ACTIVIDAD 2.10 Elabora el diagrama de actividades del videojuego.
ACTIVIDAD 2.11 Elabora los diagramas de estados de los siguientes puntos:
ACTIVIDAD 2.12 Elabora los diagramas de actividades de los siguientes puntos:
INDICACIONES: En la siguiente liga encontrarás información de cómo elaborar los diagramas de secuencia. Da clic aquí para acceder a la presentación.
ACTIVIDAD 2.13 Elabora los siguientes diagramas de secuencia:
Listas Enlazadas Dobles Circulares o Doblemente Enlazadas Circulares
Clase Nodo
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Estructura_U3_Practica3_ListasDbleEnlazadas { class Nodo { public object Dato { get; set; } public Nodo Siguiente { get; set; } public Nodo Anterior { get; set; } public Nodo(object valorDato) : this (valorDato, null) { } public Nodo(object valorDato, Nodo siguiente) { Dato = valorDato; Siguiente = siguiente; } } }Clase Lista
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Estructura_U3_Practica3_ListasDbleEnlazadas { class Lista { Nodo nodoPrincipio, nodoUltimo; public Lista() { nodoPrincipio = nodoUltimo = null; } public bool Vacio() { return nodoPrincipio == null; } public void AgregarNodoAlPrincipio(object valorNodo) { if (Vacio()) { nodoPrincipio = nodoUltimo = new Nodo(valorNodo); } else { nodoPrincipio = nodoPrincipio.Anterior = new Nodo(valorNodo, nodoPrincipio); } nodoPrincipio.Anterior = nodoUltimo; nodoUltimo.Siguiente = nodoPrincipio; } public void AgregarNodoAlUltimo(object nodoValor) { if (Vacio()) { nodoPrincipio = nodoUltimo = new Nodo(nodoValor); } else { Nodo nodoNuevo = new Nodo(nodoValor); nodoNuevo.Anterior = nodoUltimo; nodoUltimo = nodoUltimo.Siguiente = nodoNuevo; } nodoPrincipio.Anterior = nodoUltimo; nodoUltimo.Siguiente = nodoPrincipio; } public void EliminarNodoAlPrincipio() { if (Vacio()) { throw new ExcepcionListaVacia(); } else { object nodoEliminar = nodoPrincipio.Dato; if (nodoPrincipio == nodoUltimo) { nodoPrincipio = nodoUltimo = null; } else { Nodo nodoTemp = nodoPrincipio.Siguiente; nodoTemp.Anterior = nodoPrincipio.Siguiente = null; nodoPrincipio = nodoTemp; nodoPrincipio.Anterior = nodoUltimo; nodoUltimo.Siguiente = nodoPrincipio; } } } public void EliminarNodoAlUltimo() { if (Vacio()) { throw new ExcepcionListaVacia(); } object nodoAEliminar = nodoUltimo.Dato; if (nodoPrincipio == nodoUltimo) { nodoUltimo = nodoPrincipio = null; } else { Nodo nodoTemp = nodoUltimo.Anterior; nodoTemp.Siguiente = null; nodoUltimo.Anterior = null; nodoUltimo = nodoTemp; nodoPrincipio.Anterior = nodoUltimo; nodoUltimo.Siguiente = nodoPrincipio; } } public void MostrarListaPU() { if (Vacio()) { Console.WriteLine("Está Vacía"); return; } Console.WriteLine("\nLa lista contiene:"); Nodo nodoTemp = nodoPrincipio; while (nodoTemp != nodoUltimo) { Console.Write("|{0}|°|==", nodoTemp.Dato); nodoTemp = nodoTemp.Siguiente; } while (nodoTemp != nodoPrincipio) { Console.Write("|{0}|°|==", nodoTemp.Dato); nodoTemp = nodoTemp.Anterior; } Console.Write("|{0}|°|", nodoTemp.Dato); } public void MostrarListaUP() { if (Vacio()) { Console.WriteLine("Está Vacía"); return; } Console.WriteLine("\nLa lista contiene:"); Nodo nodoTemp = nodoUltimo; while (nodoTemp != nodoPrincipio) { Console.Write("|{0}|°|==", nodoTemp.Dato); nodoTemp = nodoTemp.Anterior; } while (nodoTemp != nodoUltimo) { Console.Write("|{0}|°|==", nodoTemp.Dato); nodoTemp = nodoTemp.Siguiente; } Console.Write("|{0}|°|", nodoTemp.Dato); } } }Excepción Lista Vacía
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Estructura_U3_Practica3_ListasDbleEnlazadas { class ExcepcionListaVacia : ApplicationException { public ExcepcionListaVacia() : base("Esta vacía") { } } }Probar Lista Vacía
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Estructura_U3_Practica3_ListasDbleEnlazadas { class ProbarLista { static Lista lista; static void Main(string[] args) { lista = new Lista(); Menu(); Console.WriteLine("Fin"); Console.ReadLine(); } static void Menu() { string opcion = ""; object nodo; do { Console.WriteLine("\n¿Qué desean hacer?"); Console.WriteLine("1. Agregar Nodo al Principio"); Console.WriteLine("2. Agregar Nodo al Último"); Console.WriteLine("3. Eliminar Nodo al Principio"); Console.WriteLine("4. Eliminar Nodo al Último"); Console.WriteLine("5. Mostrar Lista del Principio al Último"); Console.WriteLine("6. Mostrar Lista del Último al Principio"); Console.WriteLine("EXIT. Salir"); opcion = Console.ReadLine(); switch (opcion) { case "1": Console.WriteLine("Ingresa un dato para el Nodo:"); nodo = Console.ReadLine(); lista.AgregarNodoAlPrincipio(nodo); break; case "2": Console.WriteLine("Ingresa un dato para el Nodo:"); nodo = Console.ReadLine(); lista.AgregarNodoAlUltimo(nodo); break; case "3": Console.WriteLine("Eliminando Nodo al Pincipio"); lista.EliminarNodoAlPrincipio(); break; case "4": Console.WriteLine("Eliminar Nodo al Último"); lista.EliminarNodoAlUltimo(); break; case "5": Console.WriteLine("Mostrar Lista del Principio al Último"); lista.MostrarListaPU(); break; case "6": Console.WriteLine("Mostrar Lista del Último al Principio"); lista.MostrarListaUP(); break; default: break; } } while (opcion != "exit" && opcion != "EXIT"); } } }
INDICACIONES: En la siguiente liga encontrarás información sobre cómo elaborar los diagramas de colaboración. Da clic aquí para descargar el documento
ACTIVIDAD 2.14 Elabora los siguientes diagramas de colaboración:
Explicación de los conceptos básicos de POO
Da clic aquí para ver los conceptos básicos de la POO aplicados a C#
Tipos de asociaciones
Da clic aquí para ver el tipo de asociaciones en los diagramas de clases
Agregación, composición y asociación en C#
Da clic aquí para acceder al link
Explicación de los diagramas de clases
Da clic aquí para ver la presentación
ACTIVIDAD 2.15: Utiliza como referencia los enlaces del tema 8 y responde las siguientes preguntas:
ACTIVIDAD 2.16: Elabora los siguientes diagramas de clases, utilizando la simbología adecuada:
ACTIVIDAD 2.17: Realiza los siguientes diagramas de clases:
ACTIVIDAD 2.18: En los siguientes enlaces encontrarás información sobre los diagramas de componentes y de despliegue. Da clic aquí para obtener información sobre los diagramas de componentes. Da clic aquí para obtener información sobre los diagramas de despliegue Responde y anota en tu cuaderno las siguientes preguntas:
ACTIVIDAD 2.19: Elabora el diagrama de paquetes de tu proyecto de ingeniería de software. Utiliza como referencia este enlace para obtener mas información sobre los diagramas de paquetes.
ACTIVIDAD 2.20: Los diagramas de objetos se representan igual que los diagramas de clases, solo que en lugar de especificar la lateral de cada variable, se colocan los valores de cada propiedad y el nombre de la instancia de cada clase. Da clic aquí para mas información sobre los diagramas de objetos. Utilizando los diagramas de clases de la actividad 2.16 elabora de cada uno de ellos el diagrama de objetos, indicando los nombres de las instancias de las clases y los valores de los atributos.
Fecha de entrega: viernes 20 de marzo.
INDICACIONES: En equipos, elabora los artefactos UML utilizando VISIO y los requisitos para el proyecto de la aplicación de idiomas. En el caso de los requisitos presentar un documento word o pdf y en los diagramas hacerlos en Visio. Para realizar la evidencia sigue los siguientes puntos para crear los respectivos artefactos y separarlos por carpetas según lo descrito cada punto:
REQUISITOS DE LA APLICACIÓN PARA APRENDER IDIOMAS
Se solicita el desarrollo de una aplicación para aprender idiomas. A continuación se describe cada uno de los requisitos: