elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 21
1  Programación / Programación C/C++ / Re: Error, el programa se rompe en: 25 Febrero 2017, 13:30 pm
Lo acabo de probar y sí funciona bien. Cuando elijo la opción 2 me muestra los datos de las N personas ingresadas
2  Programación / Programación C/C++ / Re: ¿Error por falta de corchetes? en: 11 Enero 2017, 07:28 am
Como te mencionó engel lex, no es una buena práctica evitar el uso de llaves.
Personalmente prefiero usar siempre las llaves en todas las estructuras de control de decisión y de bucles (if-else, while, switch, ..)

Código
  1. if (condición) {
  2.    // ....
  3. } else {
  4.    // ...
  5. }
  6.  


Código
  1. if (condición) {
  2.    // ....
  3. } else if (condición) {
  4.    // ...
  5. } else if (condición) {
  6.    // ...
  7. } else if (condición) {
  8.    // ...
  9. } else {
  10.    // ...
  11. }
  12.  

Código
  1. while (expresion) {
  2.    if (expresion) {
  3.        if (expresion) {
  4.            while (expresion) {
  5.                ;  //solo hace lo de adentro del while
  6.            }
  7. } else {
  8.            while(expresion) {
  9.                ;  //solo hace lo de adentro del while
  10.    }
  11. }
  12.    } else {
  13.        if (expresion) {
  14.            expresión; //solo una linea
  15. } else if (expresion) {
  16.            expresion; //solo una linea
  17. } else if (expresion) {
  18.            expresion; //solo una linea
  19. } else if (expresion) {
  20.            expresion; //solo una linea
  21. }
  22.  
  23.        if (expresion) {//nuevo if
  24.            expresion;
  25. }
  26.    }
  27. }
  28.  
  29. if (expresion) { //este if no estaria adentro del primer while
  30.    expresion; //solo una linea
  31. } else {
  32.    expresion; //solo una linea
  33. }
  34.  
  35.  


3  Programación / Bases de Datos / ¿Tengo una duda en la implementación de una base de datos? en: 23 Octubre 2016, 21:03 pm
Hola, saludos a todos. Espero que alguien que sepa sobre bases de datos me pueda aclarar algunas dudas. Ando estudiando sobre la creación de una base de datos a partir de cero comenzando desde el análisis y luego pasado por la fase de identificar las entidades y relaciones aplicando allí el diagrama entidad relación.
Luego de esto según encontré en los textos existe una teoría que permite convertir el Diagrama Entidad Relación al modelo Relacional con tablas. De esta forma si trato de modelar un proceso encontrando las entidades que participan y sus interrelaciones obtengo el Modelo Entidad Relación y luego a partir de allí mediante conversiones puedo obtener el Modelo Relacional y así poder implementar las tablas con sus respectivas llaves primarias, foráneas, etc.
Pero muy a parte, hay un tema llamado Normalización en donde a partir de documentos como Facturas, Boletas, Contrato de Servicios, etc se aplica un proceso de normalización (FN1, FN2, FN3) y se obtienen distintas tablas con sus respectivas llaves, osea ya todo el modelo relacional a partir de un solo documento.
¿Mi duda radica en que no sé si ambas técnicas que describo se complementan o son técnicas diferentes? En caso que se complementen, en qué orden se aplicaría? Tengo esa duda de cómo usar ambas técnicas para un mismo diseño de base de datos. Gracias
4  Programación / Ingeniería Inversa / ¿Conocen alguna forma de poder volver a la normalidad este código? en: 2 Junio 2016, 23:00 pm
Quisiera saber si conocen la herramienta de software que utilizaron para ofuscar el código de esa manera y si saben si de alguna manera se puede volver a la normalidad. Si me dieran algunas pistas o información me ayudarían mucho  :)


Muchas gracias  ;D
5  Programación / Scripting / ¿Alguna herramienta para ofuscar código javascript? en: 2 Junio 2016, 22:59 pm
¿Alguna herramienta para ofuscar código javascript?

A parte del packer, quisiera saber si existe alguna herramienta online o para descargar que permita ofuscar código javascript o JQuery y que genere algo como la siguiente imagen:



Muchas gracias  ;D
6  Programación / Programación General / ¿Este problema de algoritmos tiene doble interpretación? en: 15 Abril 2016, 03:25 am
Estaba en clase de introducción a la algoritmia y el profesor planteó un problema. Yo lo interpreté de una forma pero el profesor de otra forma. Aquí está el enunciado y la solución . Si alguien lo pudiera revisar y ver cuál de las dos soluciones cree que sea la correcta  ;D

Un club ha adquirido polos y gorras para sus socios con un descuento del 15% para los polos y de 5% para las gorras. Diseñe un algoritmo que determine, en total, el importe de la compra, el importe del descuento y el importe a pagar por la compra efectuada.


PRIMERA INTERPRETACIÓN

Datos de entrada:
* Precio unitario de cada polo: (precio_polo)
* Precio unitario de cada gorra: (precio_gorra)
* Cantidad de polos: (cant_polo)
* Cantidad de gorras: (cant_gorra)




Datos de salida:


* Importe de la Compra Total (ic)
* Importe del Descuento Total (id)
* Importe a pagar Total (ip)



Algoritmo:


SEGUNDA INTERPRETACIÓN

Datos de entrada:

* Importe a pagar del polo: (ipp)
* Importe a pagar de la gorra: (ipg)



Datos de salida:

* Importe de la Compra Total (ic)
* Importe del Descuento Total (id)
* Importe a pagar Total (ip)


Algoritmo:


El profesor dijo que la segunda respuesta era la correcta  :P
7  Programación / Desarrollo Web / ¿Alguien sabe qué onda con este código? en: 21 Febrero 2016, 02:38 am
http://extension.agarplus.io/v2.js

¿Está oculto? Quisiera saber el contenido ya que al parecer está oculto ._. Se supone que encontraría código javascript.



Gracias
8  Programación / Java / Ayuda de novato en un programa en Java con JSF en: 16 Agosto 2015, 07:55 am
Verán que he creado una página JSF llamada registro.xhtml en donde tengo un formulario en el que ingreso los datos de una persona y las registro en un arrayList de mi ManagedBean y debajo del formulario una tabla donde voy mostrando la lista de las personas que han sido registradas.

Tengo dos ManagedBean, uno llamado Usuario.java y otro ListaUsuarios.java

Usuario.java
Código
  1. package ManagedBean;
  2.  
  3. import javax.faces.bean.ManagedBean;
  4. import javax.faces.bean.RequestScoped;
  5.  
  6. @ManagedBean
  7. @RequestScoped
  8. public class Usuario {
  9.    private static int contador = 0;
  10.    private int id;
  11.    private String username;
  12.    private String password;
  13.    private String nombres;
  14.    private String apellidoMaterno;
  15.    private String apellidoPaterno;
  16.    private int edad;
  17.    private String sexo;
  18.    private String ciudad;
  19.  
  20.    public Usuario() {
  21.        this.setId(contador++);
  22.    }
  23.  
  24.    public int getId() {
  25.        return id;
  26.    }
  27.  
  28.    public void setId(int id) {
  29.        this.id = id;
  30.    }
  31.  
  32.    public String getUsername() {
  33.        return username;
  34.    }
  35.  
  36.    public void setUsername(String username) {
  37.        this.username = username;
  38.    }
  39.  
  40.    public String getPassword() {
  41.        return password;
  42.    }
  43.  
  44.    public void setPassword(String password) {
  45.        this.password = password;
  46.    }
  47.  
  48.    public String getNombres() {
  49.        return nombres;
  50.    }
  51.  
  52.    public void setNombres(String nombres) {
  53.        this.nombres = nombres;
  54.    }
  55.  
  56.    public String getApellidoMaterno() {
  57.        return apellidoMaterno;
  58.    }
  59.  
  60.    public void setApellidoMaterno(String apellidoMaterno) {
  61.        this.apellidoMaterno = apellidoMaterno;
  62.    }
  63.  
  64.    public String getApellidoPaterno() {
  65.        return apellidoPaterno;
  66.    }
  67.  
  68.    public void setApellidoPaterno(String apellidoPaterno) {
  69.        this.apellidoPaterno = apellidoPaterno;
  70.    }
  71.  
  72.    public int getEdad() {
  73.        return edad;
  74.    }
  75.  
  76.    public void setEdad(int edad) {
  77.        this.edad = edad;
  78.    }
  79.  
  80.    public String getSexo() {
  81.        return sexo;
  82.    }
  83.  
  84.    public void setSexo(String sexo) {
  85.        this.sexo = sexo;
  86.    }
  87.  
  88.    public String getCiudad() {
  89.        return ciudad;
  90.    }
  91.  
  92.    public void setCiudad(String ciudad) {
  93.        this.ciudad = ciudad;
  94.    }
  95.  
  96.    @Override
  97.    public int hashCode() {
  98.        int hash = 5;
  99.        hash = 47 * hash + this.id;
  100.        return hash;
  101.    }
  102.  
  103.    @Override
  104.    public boolean equals(Object obj) {
  105.        if (obj == null) {
  106.            return false;
  107.        }
  108.        if (getClass() != obj.getClass()) {
  109.            return false;
  110.        }
  111.        final Usuario other = (Usuario) obj;
  112.        if (this.id != other.id) {
  113.            return false;
  114.        }
  115.        return true;
  116.    }
  117. }
  118.  

ListaUsuarios.java
Código
  1. package ManagedBean;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import javax.faces.bean.ManagedBean;
  6. import javax.faces.bean.SessionScoped;
  7.  
  8. @ManagedBean
  9. @SessionScoped
  10. public class ListaUsuarios {
  11.  
  12.    private List<Usuario> usuarios;
  13.    private List<String> ciudades;
  14.  
  15.    public ListaUsuarios() {
  16.        usuarios = new ArrayList<>();
  17.  
  18.        ciudades = new ArrayList<>();
  19.        ciudades.add("Lima");
  20.        ciudades.add("Arequipa");
  21.        ciudades.add("Cusco");
  22.        ciudades.add("Tacna");
  23.        ciudades.add("Tumbes");
  24.        ciudades.add("Madre de Dios");
  25.    }
  26.  
  27.    public List<Usuario> getUsuarios() {
  28.        return usuarios;
  29.    }
  30.  
  31.    public void setUsuarios(List<Usuario> usuarios) {
  32.        this.usuarios = usuarios;
  33.    }
  34.  
  35.    public void agregaUsuario(Usuario usuario) {
  36.        usuarios.add(usuario);
  37.    }
  38.  
  39.    public void eliminaUsuario(Usuario usuario) {
  40.        usuarios.remove(usuario);
  41.    }
  42.  
  43.    public List<String> getCiudades() {
  44.        return ciudades;
  45.    }
  46.  
  47.    public void setCiudades(List<String> ciudades) {
  48.        this.ciudades = ciudades;
  49.    }    
  50. }
  51.  

El problema lo tengo en mi página JSF llamada registro.xhtml en donde si lo hago de esta manera no tengo ningún problema, los datos se van guardando y apareciendo correctamente en la pantalla:
Código
  1. <?xml version='1.0' encoding='UTF-8' ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4.      xmlns:h="http://xmlns.jcp.org/jsf/html"
  5.      xmlns:f="http://xmlns.jcp.org/jsf/core">
  6.    <h:head>
  7.        <title>Data Table</title>
  8.    </h:head>
  9.    <h:body>
  10.        <h:form>
  11.            <h:panelGrid columns="2">
  12.                <h:outputLabel for="txtValor" value="Valor:"/>
  13.                <h:inputText id="txtValor" value="#{dato.valor}" label="Valor" required="true"/>
  14.  
  15.                <h:outputLabel for="txtNombre" value="Nombre:"/>
  16.                <h:inputText id="txtNombre" value="#{dato.nombre}" label="Nombre" required="true"></h:inputText>
  17.  
  18.                <h:outputLabel for="btnAgregar"/>
  19.                <h:commandButton id="btnAgregar" action="#{holaMundo.addValor(dato)}" value="Añadir"/>
  20.            </h:panelGrid>
  21.        </h:form>
  22.        <h:dataTable id="tabla" value="#{holaMundo.datos}" var="dato">
  23.            <h:column>
  24.                <f:facet name="header">
  25.                    <h:outputText value="valor"/>
  26.                </f:facet>
  27.                <h:outputText value="#{dato.valor}"/>
  28.            </h:column>
  29.            <h:column>
  30.                <f:facet name="header">
  31.                    <h:outputText value="Nombre"/>
  32.                </f:facet>
  33.                <h:outputText value="#{dato.nombre}"/>
  34.            </h:column>
  35.            <h:column>
  36.                <h:form>
  37.                    <h:commandButton id="btnBorrar" value="Borrar" action="#{holaMundo.removeValor(dato)}"/>
  38.                </h:form>
  39.            </h:column>
  40.        </h:dataTable>
  41.        <br/>
  42.  
  43.  
  44.    </h:body>
  45. </html>
  46.  



Como se ve en el código de la página registro.xhtml primero hay un dataTable y segundo un formulario, pero si es que ahora cambio el orden de ambos controles, y primero pongo el formulario y luego el dataTable, el programa no funciona de forma correcta.

Si cambio a esto:
Código
  1. <?xml version='1.0' encoding='UTF-8' ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4.      xmlns:h="http://xmlns.jcp.org/jsf/html"
  5.      xmlns:f="http://xmlns.jcp.org/jsf/core">
  6.    <h:head>
  7.        <title>Data Table</title>
  8.    </h:head>
  9.    <h:body>
  10.        <h:dataTable id="tabla" value="#{holaMundo.datos}" var="dato">
  11.            <h:column>
  12.                <f:facet name="header">
  13.                    <h:outputText value="valor"/>
  14.                </f:facet>
  15.                <h:outputText value="#{dato.valor}"/>
  16.            </h:column>
  17.            <h:column>
  18.                <f:facet name="header">
  19.                    <h:outputText value="Nombre"/>
  20.                </f:facet>
  21.                <h:outputText value="#{dato.nombre}"/>
  22.            </h:column>
  23.            <h:column>
  24.                <h:form>
  25.                    <h:commandButton id="btnBorrar" value="Borrar" action="#{holaMundo.removeValor(dato)}"/>
  26.                </h:form>
  27.            </h:column>
  28.        </h:dataTable>
  29.        <br/>
  30.  
  31.        <h:form>
  32.            <h:panelGrid columns="2">
  33.                <h:outputLabel for="txtValor" value="Valor:"/>
  34.                <h:inputText id="txtValor" value="#{dato.valor}" label="Valor" required="true"/>
  35.  
  36.                <h:outputLabel for="txtNombre" value="Nombre:"/>
  37.                <h:inputText id="txtNombre" value="#{dato.nombre}" label="Nombre" required="true"></h:inputText>
  38.  
  39.                <h:outputLabel for="btnAgregar"/>
  40.                <h:commandButton id="btnAgregar" action="#{holaMundo.addValor(dato)}" value="Añadir"/>
  41.            </h:panelGrid>
  42.        </h:form>
  43.    </h:body>
  44. </html>
  45.  


Se registran los usuarios pero sus datos están vacíos. No entiendo por qué de esta segunda forma no funciona. Además creo que el programa se vería mejor de la segunda forma pero así no funciona o.O
9  Programación / Programación C/C++ / Error en mi programa en tiempo de ejecución, estoy practicando polimorfimo en C+ en: 15 Julio 2015, 16:49 pm
Hola gente :) , estoy practicando el tema de polimorfimos en C++ y estoy usando el libro de Deitel titulado C++ Cómo programar 6ta edición. Como IDE utilizo el Dev C++ 5.11 y como sistema operativo Windows 7 Ultimate 64 bits.

Resulta que estoy en el capítulo 13 y he copiado los códigos tal y como salen en el libro y cuando lo compilo no hay problema, el error está cuando ejecuto el programa.

La idea es la siguiente. Declaro una clase llamada EmpleadoPorComision la cual será la clase padre o clase base. Luego declaro una clase hija llamada EmpleadoBaseMasComision la cual hereda de EmpleadoPorComision.
Ambas clases declaran el método imprimir el cual ha sido además declarado como virtual para poder dar uso del polimorfismo.

Dentro de la función main se crean los objetos correspondientes a las dos clases: empleadoPorComision y empleadoBaseMasComision.
Luego se declaran dos punteros: empleadoPorComisionPtr y empleadoBaseMasComisionPtr ,el primero del tipo de la clase padre y el segundo del tipo de la clase hija.
Luego se asigna al puntero empleadoPorComisionPtr el objeto de la clase padre empleadoPorComision y se intenta llamar al método imprimir de dicho objeto mediante el puntero:

empleadoPorComisionPtr = &empleadoPorComision ;
empleadoPorComisionPtr->imprimir();
                      // Desde aquí es donde se genera el error en tiempo de ejecución

Lo mismo se intenta hacer con empleadoBaseMasComisionPtr, que apunte al objeto de la clase hija empleadoBaseMasComision y luego llamar al método imprimir mediante el puntero:

empleadoBaseMasComisionPtr = &empleadoBaseMasComision ;
empleadoBaseMasComisionPtr->imprimir(); 
        // aquí también es donde se genera el error en tiempo de ejecución

Por último se intenta asignar la dirección del objeto empleadoBaseMasComision al puntero de la clase padre empleadoPorComisionPtr y llamar al método imprimir:

empleadoPorComisionPtr = &empleadoBaseMasComision;
empleadoPorComisionPtr->imprimir();


El código me parece que está bien porque es idéntico al que figura en el libro y el compilador no me marca ningún error de sintaxis pero sí el programa se para en tiempo de ejecución. El código es el siguiente:

EmpleadoPorComision.h
Código
  1. // EmpleadoPorComision.h
  2.  
  3. #ifndef COMISION_H
  4. #define COMISION_H
  5.  
  6. #include <string>
  7. using std::string;
  8.  
  9. class EmpleadoPorComision {
  10.  
  11.   public:
  12.  
  13.      EmpleadoPorComision(const string &, const string &, const string &,
  14.         double = 0.0, double = 0.0);
  15.      ~EmpleadoPorComision(); // destructor
  16.  
  17.      void setPrimerNombre(const string &);
  18.      string getPrimerNombre() const;
  19.  
  20.      void setApellidoPaterno(const string &);
  21.      string getApellidoPaterno() const;
  22.  
  23.      void setNumeroSeguroSocial(const string &);
  24.      string getNumeroSeguroSocial() const;
  25.  
  26.      void setVentasBrutas(double);
  27.      double getVentasBrutas() const;
  28.  
  29.      void setTarifaComision(double);
  30.      double getTarifaComision() const;
  31.  
  32.      virtual double ingresos() const;
  33.      virtual void imprimir() const;
  34.  
  35.   private:
  36.      string primerNombre;
  37.      string apellidoPaterno;
  38.      string numeroSeguroSocial;
  39.      double ventasBrutas;
  40.      double tarifaComision;
  41. };
  42.  
  43. #endif
  44.  

EmpleadoPorComision.cpp
Código
  1. // EmpleadoPorComision.cpp
  2. #include <iostream>
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include "EmpleadoPorComision.h"
  7.  
  8. // Constructor
  9. EmpleadoPorComision::EmpleadoPorComision(
  10.   const string &nombre, const string &apellido, const string &nss,
  11.   double ventas, double tarifa)
  12.   : primerNombre(nombre), apellidoPaterno(apellido), numeroSeguroSocial(nss) {
  13.  
  14.      setVentasBrutas(ventas);
  15.      setTarifaComision(tarifa);
  16. }
  17.  
  18. EmpleadoPorComision::~EmpleadoPorComision() {
  19. }
  20.  
  21. void EmpleadoPorComision::setPrimerNombre(const string &nombre) {
  22.   primerNombre = nombre;
  23. }
  24.  
  25. string EmpleadoPorComision::getPrimerNombre() const {
  26.   return primerNombre;
  27. }
  28.  
  29. void EmpleadoPorComision::setApellidoPaterno(const string &apellido) {
  30.   apellidoPaterno = apellido;
  31. }
  32.  
  33. string EmpleadoPorComision::getApellidoPaterno() const {
  34.   return apellidoPaterno;
  35. }
  36.  
  37. void EmpleadoPorComision::setNumeroSeguroSocial(const string &nss) {
  38.   numeroSeguroSocial = nss;
  39. }
  40.  
  41. string EmpleadoPorComision::getNumeroSeguroSocial() const {
  42.   return numeroSeguroSocial;
  43. }
  44.  
  45. void EmpleadoPorComision::setVentasBrutas(double ventas) {
  46.   ventasBrutas = (ventas < 0.0) ? 0.0 : ventas;
  47. }
  48.  
  49. double EmpleadoPorComision::getVentasBrutas() const {
  50.   return ventasBrutas;
  51. }
  52.  
  53. void EmpleadoPorComision::setTarifaComision(double tarifa) {
  54.   tarifaComision = (tarifa > 0.0 && tarifa < 1.0) ? tarifa : 0.0;
  55. }
  56.  
  57. double EmpleadoPorComision::getTarifaComision() const {
  58.   return tarifaComision;
  59. }
  60.  
  61. double EmpleadoPorComision::ingresos() const {
  62.   return getTarifaComision() * getVentasBrutas();
  63. }
  64.  
  65. void EmpleadoPorComision::imprimir() const {
  66.   cout << "empleado por comision: "
  67.      << getPrimerNombre() << ' ' << getApellidoPaterno()
  68.      << "\nnumero de seguro social: " << getNumeroSeguroSocial()
  69.      << "\nventas brutas: " << getVentasBrutas()
  70.      << "\ntarifa de comision: " << getTarifaComision();
  71. }
  72.  

EmpleadoBaseMasComision.h
Código
  1. // EmpleadoBaseMasComision.h
  2. #ifndef BASEMAS_H
  3. #define BASEMAS_H
  4.  
  5. #include <string>
  6. using std::string;
  7.  
  8. #include "EmpleadoPorComision.h" // Declaración de la clase EmpleadoPorComision
  9.  
  10. class EmpleadoBaseMasComision : public EmpleadoPorComision {
  11.   public:
  12.      EmpleadoBaseMasComision(string const &, string const &, string const &,
  13.         double = 0.0, double = 0.0, double = 0.0);
  14.      ~EmpleadoBaseMasComision();
  15.  
  16.      void setSalarioBase(double);
  17.      double getSalarioBase() const;
  18.  
  19.      virtual double ingresos() const;
  20.      virtual void imprimir() const;
  21.  
  22.   private:
  23.      double salarioBase;
  24. };
  25.  
  26. #endif
  27.  

EmpleadoBaseMasComision.cpp
Código
  1. // EmpleadoBaseMasComision.cpp
  2. #include <iostream>
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include "EmpleadoBaseMasComision.h"
  7.  
  8. // Constructor
  9. EmpleadoBaseMasComision::EmpleadoBaseMasComision(
  10.   const string &nombre, const string &apellido, const string &nss,
  11.   double ventas, double tarifa, double salario)
  12.   // Llamada explícita al constructor de la clase base
  13.   : EmpleadoPorComision(nombre, apellido, nss, ventas, tarifa) {
  14.  
  15.   setSalarioBase(salario);
  16. }
  17.  
  18. // Destructor
  19. EmpleadoBaseMasComision::~EmpleadoBaseMasComision() {
  20. }
  21.  
  22. void EmpleadoBaseMasComision::setSalarioBase(double salario) {
  23.   salarioBase = (salario < 0.0) ? 0.0 : salario;
  24. }
  25.  
  26. double EmpleadoBaseMasComision::getSalarioBase() const {
  27.   return salarioBase;
  28. }
  29.  
  30. double EmpleadoBaseMasComision::ingresos() const {
  31.   return EmpleadoPorComision::ingresos() + getSalarioBase();
  32. }
  33.  
  34. void EmpleadoBaseMasComision::imprimir() const {
  35.   cout << "con salario base ";
  36.   // Invoca a la función imprimir de EmpleadoPorComision
  37.   EmpleadoPorComision::imprimir();
  38.  
  39.   cout << "\nsalario base: " << getSalarioBase();
  40. }
  41.  

main.cpp
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4. using std::cin;
  5. using std::fixed;
  6.  
  7. #include <iomanip> // setprecision
  8. using std::setprecision;
  9.  
  10. // Incluye las definiciones de las clases
  11.  
  12. // #include "EmpleadoPorComision.h"; // Ya está incluído dentro de EmpleadoBaseMasComision.h
  13. #include "EmpleadoBaseMasComision.h"
  14.  
  15. int main(int argc, char** argv) {
  16.  
  17.   // Crea el objeto de la clase base
  18.   EmpleadoPorComision empleadoPorComision(
  19.      "Sue", "Jones", "222-22-2222", 10000, .06);
  20.  
  21.   // Crea un apuntandor de la clase base
  22.   EmpleadoPorComision *empleadoPorComisionPtr = 0; // 0
  23.  
  24.   // Crea un objeto de la clase derivada
  25.   EmpleadoBaseMasComision empleadoBaseMasComision(
  26.      "Bob", "Lewis", "333-33-3333", 5000, .04, 300);
  27.  
  28.   // Crea un apuntador de la clase derivada
  29.   EmpleadoBaseMasComision *empleadoBaseMasComisionPtr = 0;
  30.  
  31.   // Establece el formato de salida de punto flotante
  32.   cout << fixed << setprecision(2);
  33.  
  34.   // Imprime los objetos usando vinculación estática
  35.   cout << "Invocando a la funcion imprimir en objetos de la clase base "
  36.   << "\ny la clase derivada con vinculacion estatica\n\n";
  37.   empleadoPorComision.imprimir(); // vinculación estática
  38.   cout << "\n\n";
  39.   empleadoBaseMasComision.imprimir(); // vinculación estática
  40.  
  41.   // Imprime los objetos usando vinculación dinámica
  42.   cout << "\n\n\nInvocando a la funcion imprimir en objetos de la clase base "
  43.   << "y la \nclase derivada con vinculacion dinamica";
  44.  
  45.   // Orienta el apuntador de la clase base al objeto de la clase base e imprime
  46.   empleadoPorComisionPtr = &empleadoPorComision;
  47.   cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador"
  48. << "\nde la clase base a un objeto de la clase base se invoca a la "
  49. << "funcion imprimir de la clase base:\n\n";
  50.   empleadoPorComisionPtr->imprimir(); // Invoca a la función imprimir de la clase base
  51.  
  52.   // Orienta el apuntador de la clase derivada al objeto de la clase derivada e imprime
  53.   empleadoBaseMasComisionPtr = &empleadoBaseMasComision;
  54.   cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador"
  55. << "de la clase derivada\na un objeto de la clase base se invoca a "
  56. << "la funcion imprimir de la clase derivada:\n\n";
  57.   empleadoBaseMasComisionPtr->imprimir(); // Invoca a la función imprimir de la clase derivada
  58.  
  59.   // Orienta un apuntador de la clase base a un objeto de la clase derivada e imprime
  60.   empleadoPorComisionPtr = &empleadoBaseMasComision;
  61.   cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador de la clase base"
  62.      << "\na un objeto de la clase derivada se invoca a la funcion "
  63. << "imprimir de la clase derivada\n\n";
  64.  
  65. // Polimorfismo: invoca a la función imprimir de EmpleadoBaseMasComision;
  66. // Apuntador de la clase base a un objeto de la clase derivada
  67.   empleadoPorComisionPtr->imprimir(); // invoca a la función imprimir de la clase base. Manda el tipo del puntero
  68.   cout << endl;
  69.  
  70.   cin.get();
  71.   cin.get();
  72. return 0;
  73. }
  74.  

El mensaje de error que recibo es el siguiente:


Pero no me explico por qué me sale dicho mensaje de error. Quisiera que por favor me ayuden a encontrar el error que estoy cometiendo porque yo no lo encuentro. Gracias
10  Programación / Bases de Datos / Duda en la conversión de Modelo Entidad Relación a Modelo Relacional en: 19 Mayo 2015, 17:50 pm
Hola. Estoy practicando la conversión de modelos Entidad Relación al Modelo Relacional pero todavía tengo muchas dudas. El problema es el siguiente:

Tengo dos entidades: LIBRO y EDITORIAL. Sus atributos son:

Libro: isbn, título del libro
Editorial:  código de editorial, nombre de editorial

La llave primaria de la entidad Libro es isbn
La llave primaria de la entidad Editorial es código de editorial

La relación que pude encontrar es EDITA y la cardinalidad es de 1 a N (muchos). Un atributo de la relación es fecha de edición.

(1,1) : Cada libro es editado como mínimo por una editorial y como máximo por una editorial.
(1,N) : Cada editorial edita como mínimo un libro y como máximo muchos libros.

El modelo entidad relación sería el siguiente:


Ahora para pasarlo al Modelo Relacional la teoría dice que tengo dos opciones.

La primera opción es propagar la llave primaria de la entidad con cardinalidad 1 a la que tiene cardinalidad N formando parte de sus atributos no primos. También los atributos de la relación se propagan de esa forma. Con esta opción se desaparece la relación.

En mi caso la entidad con cardinalidad 1 es EDITORIAL así que tendría que propagar su llave primaria código de editorial a la entidad LIBRO que es la que tiene cardinalidad 1. También el atributo de la relación fecha de edición pasa a formar parte de los atributos no primos de la entidad LIBRO. El modelo quedaría entonces así:




La segunda opción es transformar la relación en una tabla cuya llave primaria sea solo la clave de la entidad con cardinalidad N. La llave primaria de la entidad con cardinalidad 1 forma parte de los atributos de primos de la nueva tabla.

En mi caso tendría que crear una nueva tabla a la que llamé EDITORIAL_LIBRO. Siguiendo lo que dice la teoría, la llave primaria de esta nueva tabla sería isbn que es en realidad llave de LIBRO. La llave código de editorial solo formaría parte de la tabla EDITORIAL_LIBRO como un atributo no primo.
Es en esta parte donde tengo dudas en cuanto a la representación de la cardinalidad. Estoy usando la representación conocida como patas de gallo y no sé cuál de estas tres formas sería la correcta:


Alguien que me pueda ayudar o que me recomiende algún libro o texto donde encuentre sobre esto? Muchas gracias
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines