You are on page 1of 28

Ezequiel Sanchez Francisco

UNIVERSIDAD TECNOLGICA DE CANDELARIA


I.N.G. EN TECNOLOGAS DE LA INFORMACIN Y COMUNICACIN
PROGRAMACIN DE APLICACIONES

ING. Isaas Ara Hernndez

Grupo: B
Sistema de ventas de Artculos (Pc-
Reparaciones)


TABLA DE CONTENIDO
INTRODUCCIN .............................................................................................................................. 2
PLANTEAMIENTO DEL PROBLEMA ......................................................................................... 3
DESARROLLO ................................................................................................................................. 3
PROGRAMACIN ORIENTADA A OBJETO (POO) ............................................................ 3
CONCEPTOS FUNDAMENTALES .......................................................................................... 3
CLASE ....................................................................................................................................... 3
OBJETO .................................................................................................................................... 5
ATRIBUTO ................................................................................................................................ 7
MTODO ................................................................................................................................... 8
HERENCIA ................................................................................................................................ 9
ASOCIACIN ........................................................................................................................... 9
AGREGACIN ....................................................................................................................... 11
POLIMORFISMO.................................................................................................................... 11
CONCLUSIN ................................................................................................................................ 27














INTRODUCCIN
La programacin orientada a objetos conocida como (POO) es un paradigma o
modelo de programacin. Esto significa que no es un lenguaje especfico, o una
tecnologa, sino una forma de programar, una manera de plantearse la
programacin. No es la nica o necesariamente mejor o peor que otras, pero se ha
constituido en una de las formas de programar ms populares e incluso muchos de
los lenguajes que usamos hoy en da lo soportan o estn diseados bajo ese modelo
como lo son: PHP, JAVA, C#, etc.
La programacin orientada a objeto busca darle soluciones informticas
identificando cual sea el problema que se tiene, esto se realiza identificando los
conceptos relevantes o las entidades involucradas, reconociendo las caractersticas
que estos tienen y las acciones que estos realizan o bien s es que producen un
efecto sobre ellos.
La programacin orientada a objetos es una forma de desarrollar un sistema,
pensando en las entidades principales del problema que el sistema pretende
resolver, donde el lenguaje de programacin es la herramienta para darle la solucin
a dicho problema. Lo que caracteriza a la POO es que lleva todo lo que pensamos
respecto a las funcionalidades del sistema a una base de cdigo.
En el mundo real Cuando observamos a nuestro alrededor podemos visualizar
cosas, objetos, pero podemos reconocer estos objetos porque cada objeto
pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto
porque son de clases diferentes y tambin un TV de otro porque, aunque sean
iguales, cada uno es un objeto distinto. ste es el modelo que la POO intenta seguir
para estructurar un sistema.

PLANTEAMIENTO DEL PROBLEMA
La problemtica surge debido que en la empresa Pc-Reparaciones no tiene un
software que le brinde un servicio para sus ventas de artculos electrnicos as como
accesorios de computadoras, por eso surge la necesidad de desarrollar un sistema
que optimice las soluciones de la empresa.
DESARROLLO
PROGRAMACIN ORIENTADA A OBJETO (POO)
La programacin Orientada a Objetos es una metodologa que basa la estructura
de los programas en torno a los objetos. Los lenguajes de POO ofrecen medios y
herramientas para describir los objetos manipulados por un programa. Ms que
describir cada objeto individualmente, estos lenguajes proveen una construccin
(Clase) que describe a un conjunto de objetos que poseen las mismas propiedades.
CONCEPTOS FUNDAMENTALES
CLASE
Las clases son uno de los principales componentes de un lenguaje de
programacin, pues en ellas ocurren todos los procesos lgicos requeridos para un
sistema, en si podemos definirlas como estructuras que representan objetos del
mundo real, tomando como objetos a personas, lugares o cosas, en general las
clases poseen propiedades, comportamientos y relaciones con otras clases del
sistema.

Una clase se compone por tres partes fundamentales:




Nombre: Contiene el Nombre de la Clase.
Atributos: Representan las propiedades que caracterizan la clase.
Mtodos: Representan el comportamiento u operaciones, la forma como interacta
la clase con su entorno.
La clase puede definirse como la agrupacin o coleccin de objetos que comparten
una estructura comn y un comportamiento comn.
Es una plantilla que contiene la descripcin general de una coleccin de objetos.
Consta de atributos y mtodos que resumen las caractersticas y el comportamiento
comunes de un conjunto de objetos.
Todo objeto (tambin llamado instancia de una clase), pertenece a alguna clase.
Mientras un objeto es una entidad concreta que existe en el tiempo y en el espacio,
una clase representa solo una abstraccin.
Todos aquellos objetos que pertenecen a la misma clase son descritos o comparten
el mismo conjunto de atributos y mtodos. Todos los objetos de una clase tienen el
mismo formato y comportamiento, son diferentes nicamente en los valores que
contienen sus atributos. Todos ellos responden a los mismos mensajes.
Caractersticas Generales
Una clase es un nivel de abstraccin alto. La clase permite describir un
conjunto de caractersticas comunes para los objetos que representa.
Ejemplo: La clase Avin se puede utilizar para definir los atributos (tipo de
avin, distancia, altura, velocidad de crucero, capacidad, pas de origen, etc.)
y los mtodos (calcular posicin en el vuelo, calcular velocidad de vuelo,
estimar tiempo de llegada, despegar, aterrizar, volar, etc.) de los objetos
particulares Avin que representa.
Un objeto es una instancia de una clase. Cada objeto concreto dentro de un
sistema es miembro de una clase especfica y tiene el conjunto de atributos
y mtodos especificados en la misma
Las clases se relacionan entre s mediante una jerarqua. Entre las clases se
establecen diferentes tipos de relaciones de herencia, en las cuales la clase
hija (subclase) hereda los atributos y mtodos de la clase padre (superclase),
adems de incorporar sus propios atributos y mtodos.
OBJETO
Es una entidad (tangible o intangible) que posee caractersticas y acciones que
realiza por s solo o interactuando con otros objetos.
Un objeto es una entidad caracterizada por sus atributos propios y cuyo
comportamiento est determinado por las acciones o funciones que pueden
modificarlo, as como tambin las acciones que requiere de otros objetos. Un objeto
tiene identidad e inteligencia y constituye una unidad que oculta tanto datos como
la descripcin de su manipulacin. Puede ser definido como una encapsulacin y
una abstraccin: una encapsulacin de atributos y servicios, y una abstraccin del
mundo real.
Para el contexto del Enfoque Orientado a Objetos (POO) un objeto es una entidad
que encapsula datos (atributos) y acciones o funciones que los manejan (mtodos).
Tambin para la POO un objeto se define como una instancia o particularizacin de
una clase.
Los objetos de inters durante el desarrollo de software no slo son tomados de la
vida real (objetos visibles o tangibles), tambin pueden ser abstractos. En general
son entidades que juegan un rol bien definido en el dominio del problema. Un libro,
una persona, un carro, un polgono, son apenas algunos ejemplos de objeto.
Cada objeto puede ser considerado como un proveedor de servicios utilizados por
otros objetos que son sus clientes. Cada objeto puede ser a la vez proveedor y
cliente. De all que un programa pueda ser visto como un conjunto de relaciones
entre proveedores clientes. Los servicios ofrecidos por los objetos son de dos tipos:
1. Los datos, que llamamos atributos.
2. Las acciones o funciones, que llamamos mtodos.




Caractersticas Generales
Un objeto se identifica por un nombre o un identificador nico que lo
diferencia de los dems. Ejemplo: el objeto Cuenta de Ahorros nmero 12345
es diferente al objeto Cuenta de Ahorros nmero 25789. En este caso el
identificador que los hace nicos es el nmero de la cuenta.

Un objeto posee estados. El estado de un objeto est determinado por los
valores que poseen sus atributos en un momento dado.

Un objeto tiene un conjunto de mtodos. El comportamiento general de los
objetos dentro de un sistema se describe o representa mediante sus
operaciones o mtodos. Los mtodos se utilizarn para obtener o cambiar el
estado de los objetos, as como para proporcionar un medio de comunicacin
entre objetos.

Un objeto tiene un conjunto de atributos. Los atributos de un objeto contienen
valores que determinan el estado del objeto durante su tiempo de vida. Se
implementan con variables, constantes y estructuras de datos (similares a los
campos de un registro)

Los objetos soportan encapsulamiento. La estructura interna de un objeto
normalmente est oculta a los usuarios del mismo. Los datos del objeto estn
disponibles solo para ser manipulados por los propios mtodos del objeto. El
nico mecanismo que lo conecta con el mundo exterior es el paso de
mensajes.

Un objeto tiene un tiempo de vida dentro del programa o sistema que lo crea
y utiliza. Para ser utilizado en un algoritmo el objeto debe ser creado con una
instruccin particular (New o Nuevo) y al finalizar su utilizacin es destruido
con el uso de otra instruccin o de manera automtica
ATRIBUTO
Son los datos o variables que caracterizan al objeto y cuyos valores en un momento
dado indican su estado.
Un atributo es una caracterstica de un objeto. Mediante los atributos se define
informacin oculta dentro de un objeto, la cual es manipulada solamente por los
mtodos definidos sobre dicho objeto
Un atributo consta de un nombre y un valor. Cada atributo est asociado a un tipo
de dato, que puede ser simple (entero, real, lgico, carcter, string) o estructurado
(arreglo, registro, archivo, lista, etc.)
Su sintaxis algortmica es: <Modo de Acceso> <Tipo de dato> <Nombre del
Atributo>;
Los modos de acceso son:
Pblico: Atributos (o Mtodos) que son accesibles fuera de la clase. Pueden
ser llamados por cualquier clase, aun si no est relacionada con ella. Este
modo de acceso tambin se puede representar con el smbolo +

Privado: Atributos (o Mtodos) que slo son accesibles dentro de la
implementacin de la clase. Tambin se puede representar con el smbolo


Protegido: Atributos (o Mtodos) que son accesibles para la propia clase y
sus clases hijas (subclases). Tambin se puede representar con el smbolo
#




MTODO
Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que
permiten crearlos, cambiar su estado o consultar el valor de sus atributos.
Los mtodos constituyen la secuencia de acciones que implementan las
operaciones sobre los objetos. La implementacin de los mtodos no es visible fuera
de objeto.
La sintaxis algortmica de los mtodos expresados como funciones y acciones es:
Para funciones se pueden usar cualquiera de estas dos sintaxis:
<Modo de Acceso> Funcin <Nombre> [(Lista Parmetros)]: <Descripcin del
Tipo de datos>
Para acciones:
<Modo de Acceso> Accin <Nombre> [(Lista Parmetros)] donde los
parmetros son opcionales
Ejemplo: Un rectngulo es un objeto caracterizado por los atributos Largo y Ancho,
y por varios mtodos, entre otros Calcular su rea y Calcular su permetro.
Caractersticas Generales
Cada mtodo tiene un nombre, cero o ms parmetros (por valor o por
referencia) que recibe o devuelve y un algoritmo con el desarrollo del mismo.

En particular se destaca el mtodo constructor, que no es ms que el mtodo
que se ejecuta cuando el objeto es creado. Este constructor suele tener el
mismo nombre de la clase/ objeto, pero aunque es una prctica comn, el
mtodo constructor no necesariamente tiene que llamarse igual a la clase (al
menos, no en seudocdigo). Es un mtodo que recibe cero o ms parmetros
y lo usual es que inicialicen los valores de los atributos del objeto.

En lenguajes como Java y C++ se puede definir ms de un mtodo
constructor, que normalmente se diferencian entre s por la cantidad de
parmetros que reciben.
Los mtodos se ejecutan o activan cuando el objeto recibe un mensaje, enviado
por un objeto o clase externo al que lo contiene, o por el mismo objeto de manera
local.
HERENCIA
La herencia es especfica de la programacin orientada a objetos, donde una clase
nueva se crea a partir de una clase existente.
La herencia (a la que habitualmente se denomina subclases) proviene del hecho de
que la subclase (la nueva clase creada) contiene los atributos y mtodos de la clase
primaria.
La principal ventaja de la herencia es la capacidad para definir atributos y mtodos
nuevos para la subclase, que luego se aplican a los atributos y mtodos heredados.
Esta particularidad permite crear una estructura jerrquica de clases cada vez ms
especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando
desea especializar una clase existente.
ASOCIACIN
Las asociaciones son conexiones conceptuales entre clases. Por ejemplo la
asociacin, entre trabajador y empresa.
Un trabajador labora en una empresa la asociacin conectara con una lnea a
trabajador y empresa, si vemos los roles de cada uno podemos decir que el
trabajador es un empleado y la empresa es la empleadora.
Labora en es el nombre de la asociacin y la colocamos sobre la linea, mientras
que los roles (empleado, empleador) los colocamos bajo la lnea a cada lado segn
corresponda. As nuestra relacin Un trabajador labora en una empresa en UML
se vera as:



Las asociaciones pueden funcionar en ambos sentidos. Si vemos el ejemplo anterior
desde la perspectiva de la empresa, la asociacin sera Una empresa emplea
trabajadores



Notemos que para comprender el sentido de la asociacin aadimos una flecha.
Las asociaciones no se limitan conectar una clase con otra, pueden conectarse
varias clases con una.




Cuando necesitamos especificar ms detalles en las asociaciones como
restricciones podemos especificarlas encerrndolas entre llaves. Por ejemplo un
cajero atiende a un cliente, pero cada cliente es atendido en el orden de su llegada.


AGREGACIN
Una agregacin es una acumulacin de clases. Es decir una clase est formada
por otras.
Por ejemplo un auto est formado por su motor, chasis, carrocera entre otras cosas.
En UML esto se representara as:







Composicin
Una composicin es un tipo de agregacin, la cual determina una restriccin. Cada
componente de una agregacin puede pertenecer tan solo a un todo.
Esto se representa de igual forma que una agregacin, con la diferencia de que el
rombo esta rellenado.
POLIMORFISMO
Es la capacidad que tienen los objetos de responder al mismo mensaje o eventos
en funcin de los parmetros utilizados durante su invocacin.
El polimorfismo determina que el mismo nombre de mtodo, realizar diferentes
acciones segn el objeto sobre el que sea aplicado.
Pasando a un ejemplo real, tomamos dos objetos: Pelota y Vaso Cristal; si
ejecutamos sobre ambos el mtodo Tirar, el resultado en ambos casos ser muy
diferente; mientras que el objeto Pelota rebotar al llegar al suelo, el objeto Vaso
Cristal se romper.
Tomando como ejemplo la imagen anterior, podemos decir que un objeto de la
clase FiguraGeometrica puede usarse para referirse a cualquier objeto de
cualquier subClase de FiguraGeometrica en otras palabras una figura geomtrica
puede ser un cuadro, un tringulo, un cuadrado o cualquier figura que en trminos
generales sea geomtrica.




CDIGO DEL SISTEMA
CLASE CONEXION
package pc.reparaciones;
import java.sql.*;
public class conectate {
private final String bd = "dbFactura";
private final String login = "root";
private final String password = "";
private final String url = "jdbc:mysql://localhost/"+bd;
Connection conn = null;
/** Constructor de DbConnection */
public conectate() {
try{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
conn = DriverManager.getConnection(url,login,password);
if (conn!=null){
System.out.println("Conexin a base de datos "+bd+". listo");
}
}catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}
}
/**Permite retornar la conexin*/
public Connection getConnection(){
return conn;
}
public void desconectar(){
conn = null;
System.out.println("La conexion a la base de datos "+bd+" a terminado");
}
} package pc.reparaciones;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;

public class Sql {
private conectate con;
public Sql(){
con = new conectate();
}
/*
* INSERTRA UN NUEVO REGISTRO EN LA BASE DE DATOS
* PARAMETROS(Un array de String con los datos a insertar,la instruccion sql)
*/
public boolean Ejecutar_Insruccion_Sql(String datos[], String sql){
boolean ok=false;
try {
PreparedStatement pstm = con.getConnection().prepareStatement(sql);
for(int i=0; i<=datos.length-1;i++){
pstm.setString(i+1, datos[i]);
}
pstm.execute();
pstm.close();
ok=true;
}catch(SQLException e){
System.out.println(e);
}
return ok;
}
public boolean existe(String campo, String from_where){
int registros = 0;
try{
PreparedStatement pstm = con.getConnection().prepareStatement("SELECT
count("+campo+") as total " + from_where);
ResultSet res = pstm.executeQuery();
res.next();
registros = res.getInt("total");
res.close();
}catch(SQLException e){
System.out.println(e);
}
//true: existe
//false: no existe
if (registros >0){return true;}else{return false;}
}
public String GetDataString(String colName, String sql){
String data ="";
try{
PreparedStatement pstm = con.getConnection().prepareStatement(sql);
ResultSet res = pstm.executeQuery();
while(res.next()){
data = res.getString(colName);
}
res.close();
}catch(SQLException e){
System.out.println(e);
}
return data;
}
public Double GetDataDouble(String colName, String sql){
double data =0;
try{
PreparedStatement pstm = con.getConnection().prepareStatement(sql);
ResultSet res = pstm.executeQuery();
while(res.next()){
data = res.getDouble(colName);
}
res.close();
}catch(SQLException e){
System.out.println(e);
}
return data;
}

public Object[] GetColumna(String tabla, String colName, String sql){
int registros = 0;
//obtenemos la cantidad de registros existentes en la tabla
try{
PreparedStatement pstm = con.getConnection().prepareStatement("SELECT
count(*) as total FROM " + tabla);
ResultSet res = pstm.executeQuery();
res.next();
registros = res.getInt("total");
res.close();
}catch(SQLException e){
System.out.println(e);
}

Object[] data = new Object[registros];
try{
PreparedStatement pstm = con.getConnection().prepareStatement(sql);
ResultSet res = pstm.executeQuery();
int i = 0;
while(res.next()){
data[i] = res.getObject(colName);
i++;
}
res.close();
}catch(SQLException e){
System.out.println(e);
}
return data;
}
/* METODO PARA OBTENER TODOS LOS DATOS DE UNA TABLA
* parametros (Un array con los nombres de las columnas, el nombre de la tabla,
la instruccion sql)
*/
public Object [][] GetTabla(String colName[], String tabla, String sql){
int registros = 0;
//obtenemos la cantidad de registros existentes en la tabla
try{
PreparedStatement pstm = con.getConnection().prepareStatement("SELECT
count(*) as total FROM " + tabla);
ResultSet res = pstm.executeQuery();
res.next();
registros = res.getInt("total");
res.close();
}catch(SQLException e){
System.out.println(e);
}
Object[][] data = new String[registros][colName.length];
String col[] = new String[colName.length];
//realizamos la consulta sql y llenamos los datos en "Object"
try{
PreparedStatement pstm = con.getConnection().prepareStatement(sql);
ResultSet res = pstm.executeQuery();
int i = 0;
while(res.next()){
for(int j=0; j<=colName.length-1;j++){
col[j] = res.getString(colName[j]);
data[i][j] = col[j];
}
i++;
}
res.close();
}catch(SQLException e){
System.out.println(e);
}
return data;
}
}
CLASE CONTROL
package pc.reparaciones;
public class Control {
private Sql mySql = new Sql();
//variables privadas
private String ID_Cliente="";
private String NumFactura="";
private iFactura Factura;
private Numero_a_Letra NL = new Numero_a_Letra();
public Control(){
}
public boolean existe_cliente(String ID){
this.ID_Cliente=ID;
return mySql.existe("ID", " from clientes where id='"+ID+"';");
}
public String getNameCliente(){
return mySql.GetDataString("nombre", "select nombre from clientes where
id='"+this.ID_Cliente+"';");
}
public Object[] getID_Producto(){
return mySql.GetColumna("producto", "id", "select id from producto;");
}
public Object[][] getDataProducto(String idProducto){
String[] columnas={"nombre","precioU","Cantidad"};
Object[][] data = mySql.GetTabla(columnas, "producto", "select * from producto where
id='"+idProducto+"';");
return data;
}
//devuelve un codigo de 10 caracteres alfabeticos al azar
public String GenerarNumFactura(){
String cod="FACT-";
for(int i=1; i<=5;i++){
int num = (int)((Math.random()*(90-65))+65);
cod = cod + (char) num;
}
NumFactura = cod;
return cod;
}
public String getNumFactura(){
return this.NumFactura;
}
public void CrearFactura(String NumeroFactura, String Vendedor){
String[] datos = {NumeroFactura, Vendedor, "",ID_Cliente};
mySql.Ejecutar_Insruccion_Sql(datos, "insert into
factura(Num,Vendedor,observacion,id_cliente) values(?,?,?,?);");
}
public boolean Actualizar_Observaciones(String obs){
String[] datos = {obs,this.NumFactura};
return mySql.Ejecutar_Insruccion_Sql(datos, "update factura set Observacion=?
where Num=?;");
}
//registra un producto en la tabla detalle, pero tambien actualiza la cantidad de la tabla
producto
public boolean RegistrarProducto(String idProducto,String NumFactura,String Cantidad,
String precio, String total){
String[] datos = {idProducto, NumFactura, Cantidad,precio,total}
String[] datosP = {Cantidad,idProducto};
If
mySql.Ejecutar_Insruccion_Sql(datosP, "update producto set cantidad=cantidad-? where
ID=?;"))
{
return mySql.Ejecutar_Insruccion_Sql(datos, "insert into
detalle(id_producto,num_factura,cantidad,precioU,total) values(?,?,?,?,?);");
}else{
return false;
}
}
public Object[][] getDetalle(String nFactura){
String[] columnas={"id_producto","cantidad","precioU","total"};
Object[][] data = mySql.GetTabla(columnas, "detalle where
num_factura='"+nFactura+"';", "select * from detalle where num_factura='"+nFactura+"';");
return data;
}
public Object[][] getClientes(){
String[] columnas={"ID","nombre","direccion","persona_telefono"};
Object[][] data = mySql.GetTabla(columnas, "clientes", "select * from clientes;");
return data;
}
public Double getTotal(){
return mySql.GetDataDouble("t", "select round( sum( total ) , 2 ) as t from detalle where
num_factura='"+this.NumFactura+"';");
}

public void VerFactura(){
String Total = getTotal()+"";
Factura = new iFactura();
Factura.ver_Factura( NumFactura, NL.Convertir(Total, true) , Total);
}
}


CONCLUSIN
En la programacin orientada a objetos tenemos que aprender a pensar las cosas
de una manera distinta, para escribir nuestros programas en trminos de objetos,
propiedades, mtodos, herencia, polimorfismos, etc.
La programacin orientada a objetos permite la optimizacin del cdigo generado,
gracias a que mediante tcnicas de herencia, atributos entre otros nos permiten,
que el cdigo sea genrico de manera que sea reutilizable. La Programacin
Orientada a Objetos es la abstraccin de la realidad, es decir, cuando se tiene un
problema puntual de la realidad, este problema puede ser modelado para darle una
solucin computacional.
La Programacin Orientada a Objetos propone representar todo lo que se conoce
como objeto, que interacta y se relaciona entre s. Dicho objeto puede
representarse absolutamente en cualquier cosa, desde algo fsico y tangible como
una persona, una factura o un auto hasta cosas no intangibles como la imaginacin
o algn algoritmo matemtico.
La POO no es difcil, pero es una manera especial de pensar, de manera que la
forma de hacer las cosas puede ser diferente segn el programador. Aunque se
logren hacer los programas de formas distintas, no todas son correctas; lo difcil no
es programar orientando a objetos sino programar bien. Programar bien es
importante porque as el programador aprovecha todas las ventajas de la POO.

You might also like