Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Parcial Práctico I
Grupo: A
16 de septiembre de 2010.
1. DISEÑO DE LA SOLUCION
1.1 BREVE EXPLICACION
FUNCIONAMIENTO DE LA APLICACIÓN:
Se trata de una venta de computadoras laptops llamada best buy, la tienda maneja 3 marcas: Dell,
Hp y Sony. Cada marca que la empresa maneja tiene 3 modelos, los modelos se identifican por su ultima
silaba donde indica el procesador, se trata de la nueva línea de procesadores que Intel lanzo para el año
2010. Entre las marcas hay diferencias en los modelos a parte del procesador, la cantidad y marca de
memoria de video, el precio y la cantidad de memoria RAM.
Se aplicó Abstract Factory, los comentarios en el código fuente detallaran más claramente cómo se
implementó el modelo.
El modelo singleton, se aprovechó en el obsequio que Best Buy está otorgando por cada compra.
Actualmente el obsequio puede ser un impresora, un mouse bluetooh o un book bag (mochila), el usuario
solo puede elegir uno de los obsequios, una vez agregado su regalo no podrá agregar otro, al menos que
decida retirar o cancelar el regalo, podrá elegir otro (en esa parte se borra la instancia singleton para poder
instanciar nuevamente), igual los comentarios en las líneas de código mostraran un mejor detalle de lo que
aquí brevemente se presentó.
Dudas a:
nelson_mnc44@hotmail.com
2. CODIFICACION DE CADA CLASE.
2.1 CODIGO DE LAS CLASES VISUAL BASIC.
FABRICA ABSTRACTA
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
'DECLARACION DE VARIABLES:
' Las propiedades son de tipo protegidas para que puedan ser heredada por las clases
de producto concreto finales cada marca.
Protected micro As String
End Class
FABRICAS CONCRETAS
DELL
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & delli7.seti7()
End Function
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & delli5.seti5()
End Function
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & delli3.seti3()
End Function
End Class
HP
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & hpi7.seti7()
End Function
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & hpi5.seti5()
End Function
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & hpi3.seti3()
End Function
End Class
SONY
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & sonyi5.seti5()
End Function
Return "Modelo: " & Me.modelo & ", Su Precio: " & Me.precio & ", Su Memoria Ram:
" & Me.ram & ", Su VideoCard: " & Me.video & ". Junto a su novedoso procesador de la
linea 2010:" & sonyi3.seti3()
End Function
End Class
PRODUCTOS ABSTRACTOS.
NOTEBOOKS i7
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
'CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS NOTEBOOKS.
Public MustInherit Class Notebooki7
'DECLARACION DE VARIABLES:
' Las propiedades son de tipo protegidas para que puedan ser heredada por las clases
de producto concreto finales cada marca.
Protected micro As String
End Class
NOTEBOOKS i5
'CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS NOTEBOOKS.
Public MustInherit Class Notebooki5
'DECLARACION DE VARIABLES:
' Las propiedades son de tipo protegidas para que puedan ser heredada por las clases
de producto concreto finales cada marca.
Protected micro As String
End Class
NOTEBOOKS i3
'CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS NOTEBOOKS.
Public MustInherit Class Notebooki3
'CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
Public Sub New()
End Sub
'DECLARACION DE VARIABLES:
' Las propiedades son de tipo protegidas para que puedan ser heredada por las clases
de producto concreto finales cada marca.
Protected micro As String
End Class
DELL’s
HP’s
Public Class HPi7
Inherits Notebooki7
'Dell i5 hereda de la abstracta Notebook i5.
'CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
Public Sub New()
End Sub
End Class
SONY’s
Public Class Sonyi7
Inherits Notebooki7
'Dell i7 hereda de la abstracta Notebook i7.
'CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
Public Sub New()
End Sub
End Class
Class Regalo
' Declaramos de acuerdo al patrón Singleton, la variable instancia.El modificador
static sirve permite trabajar con la propiedad instancia desde dentro de la clase, aun
sin haber instanciado la clase ok.
Private Shared instancia As Regalo
End Function
End Class
namespace parcialPracticoI
{
///ESTA ES LA CLASE FABRICA ABSTRACTA
public abstract class FA_Nbooks ///indica que es abstracta
{
//CONSTRUCTOR.
public FA_Nbooks() { }
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las
clases fabricas concretas de cada marca.
}
}
FABRICAS CONCRETAS
DELL
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
//INDICANDO QUE LA FABRICA CONCRETA HEREDA DE LA ABSTRACTA FA_Nbooks.
public class FCDell:FA_Nbooks
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
public FCDell(){}
}
}
HP
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
//INDICANDO QUE LA FABRICA CONCRETA HEREDA DE LA ABSTRACTA FA_Nbooks.
class FCHP : FA_Nbooks
{
}
}
SONY
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
//INDICANDO QUE LA FABRICA CONCRETA HEREDA DE LA ABSTRACTA FA_Nbooks.
class FCSony : FA_Nbooks
{
PRODUCTOS ABSTRACTOS.
NOTEBOOKS i7
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
//CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS NOTEBOOKS.
public abstract class Notebooki7
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
public Notebooki7() { }
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las
clases de producto concreto finales cada marca.
protected String micro;
}
}
NOTEBOOKS i5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las
clases de producto concreto finales cada marca.
protected String micro;
}
}
NOTEBOOKS i3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
//CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS NOTEBOOKS.
public abstract class Notebooki3
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
public Notebooki3() { }
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las
clases de producto concreto finales cada marca.
protected String micro;
DELL’s
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
public class Delli5 : Notebooki5 //Dell i5 hereda de la abstracta Notebook i5.
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
public Delli5() { }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
public class Delli3 : Notebooki3 //Dell i3 hereda de la abstracta Notebook i3.
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
public Delli3() { }
}
}
HP’s
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
namespace parcialPracticoI
{
SONY’s
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace parcialPracticoI
{
namespace parcialPracticoI
{
namespace parcialPracticoI
{
namespace parcialPracticoI
{
class Regalo
{
// Declaramos de acuerdo al patrón Singleton, la variable instancia.El modificador static
sirve permite trabajar con la propiedad instancia desde dentro de la clase, aun sin haber
instanciado la clase ok.
private static Regalo instancia;
private Regalo()
{
//CONSTRUCTOR declarado segun el diseño singleton como privado.
}
}
}
//CONSTRUCTOR.
function __construct()
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las clases
fabricas concretas de cada marca.
protected $video;
protected $ram;
protected $modelo;
protected $precio;
FABRICAS CONCRETAS
DELL
function __construct()
{
}
$this->precio = "$1350.00";
$this->video="Ati 1GB";
///Creando instancia.
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " .
$this->ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea
2010:" . $delli7->seti7();
$this->precio = "$900.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram:
" . $this->ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea
2010:" . $delli5->seti5();
$this->precio = "750.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram:
" . $this->ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea
2010:" . $delli3->seti3();
}
HP
//INDICANDO QUE LA FABRICA CONCRETA HEREDA DE LA ABSTRACTA FA_Nbooks.
$this->precio = "$1250.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " . $this-
>ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea 2010:" .
$hpi7->seti7();
$this->precio = "$800.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " . $this-
>ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea 2010:" .
$hpi5->seti5();
$this->precio = "$650.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " . $this-
>ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea 2010:" .
$hpi3->seti3();
}
SONY
//INDICANDO QUE LA FABRICA CONCRETA HEREDA DE LA ABSTRACTA FA_Nbooks.
$this->precio = "$1200.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " .
$this->ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea
2010:" . $sonyi7->seti7();
$this->precio = "$855.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " .
$this->ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea
2010:" . $sonyi5->seti5();
$this->precio = "$730.00";
//En la cadena que se regresa al final se llama el metodo que estable el procesador.
return "Modelo: " . $this->modelo . ", Su Precio: " . $this->precio . ", Su Memoria Ram: " .
$this->ram . ", Su VideoCard: " . $this->video . ". Junto a su novedoso procesador de la linea
2010:" . $sonyi3->seti3();
}
PRODUCTOS ABSTRACTOS.
NOTEBOOKS i7
//CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS
NOTEBOOKS.
function __construct()
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las clases de
producto concreto finales cada marca.
protected $micro;
6MB Cache Level3, 8 Nucleos, a 2.8 MHZ With turbo Booster TM";
}
NOTEBOOKS i5
//CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS
NOTEBOOKS.
function __construct() { }
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las clases de
producto concreto finales cada marca.
protected $micro;
$this->micro = "Intel Core i5, 3MB Cache Level3, 4 Nucleos, a 2.1 MHZ With turbo
Booster TM";
NOTEBOOKS i3
//CLASE GENERAL ABSTRACTA ENCARGADA DE COLOCAR PROCESADOR RESPECTIVO A LAS
NOTEBOOKS.
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
function __construct() { }
//DECLARACION DE VARIABLES:
// Las propiedades son de tipo protegidas para que puedan ser heredada por las clases de
producto concreto finales cada marca.
protected $micro;
$this->micro = "Intel Core i3, 3MB Cache Level3, 4 Nucleos, a 2.0 MHZ";
DELL’s
{
//CONSTRUCTOR DECLARADO POR BUENAS PRACTICAS DE PROGRAMACION
function __construct() { }
function __construct() { }
function __construct() { }
HP’s
class HPi7 extends Notebooki7 //HP i7 hereda de la abstracta Notebook i7.
function __construct() { }
function __construct() { }
}
function __construct() { }
SONY’s
class Sonyi7 extends Notebooki7 //Sony i7 hereda de la abstracta Notebook i7.
function __construct() { }
function __construct() { }
function __construct() { }
}
CLASE REGALO DONDE SE IMPLEMENTO SINGLETON.
class Regalo
if(!isset(self::$instancia))
return self::$instancia;
}
public function establecerRegalo($regalo)
return $regalo;
}
3. CODIGO DEL CLIENTE.
3.1 CLIENTE VISUAL BASIC
Public Class Form1
Private c As Regalo
' La instancia de Regalo privada como lo establece el modelo.
End Sub
textBox2.Text = c.establecerRegalo(Me.comboBox2.Text)
End If
End Sub
namespace parcialPracticoI
{
public partial class Form1 : Form
}
}
c = null;
this.textBox2.Text = "";
}
}
}
<title>Parcial Practico</title>
<style type="text/css">
<!--
#title {
font-size: 24px;
font-style: normal;
color: #009;
text-align: center;
#form1 p {
text-align: center;
body {
background-color: #CCC;
#form1 p {
font-size: 12px;
#form1 p {
font-size: 16px;
#form1 p {
font-size: 18px;
-->
</style></head>
<body>
<?php
echo "
<p>Paso_1<br />
</select>
</p>
<p> </p>
<p>Paso_2</p>
<p>Por su compra usted obtiene un regalo:
</select>
</p>
<p> </p>
<p>Paso_3 </p>
<p>PROCESAR SU TRANSACCION:</p>
<p>
</p>
<p> </p>
</form>
<p> </p>
<p> </p>
<p> </p> ";
else
{
//Obteniendo valores posteados.
$cbModelo = $_POST["cbmodelo"];
$cbRegalo = $_POST["cbRegalo"];
echo "
<p>Paso_1<br />
</select>
</p>
<p> </p>
<p>Paso_2</p>
</select>
</p>
<p> </p>
<p>Paso_3 </p>
<p>PROCESAR SU TRANSACCION:</p>
<p>
<p> </p>
</form>
<p> </p>
<p> </p>
<p> </p> ";
} ?>
4 CAPTURA DE PANTALLA DE INTERFAZ DE USUARIO.
4.1 VISUAL BASIC
Nota: se muestra también el explorador de la solución como comprobante de existencia de las clases.
4.2 VISUAL C SHARP
Nota: se muestra tambien el explorador de la solucion como comprobante de existencia de las clases.
4.3 PHP
5 CAPTURA DE PANTALLA DE PROGRAMA
EJECUTANDOSE
5.1 VISUAL BASIC
5.2 VISUAL C SHARP
5.3 PHP