Autor Tema: Dudas ejercicio programacion orientada a objetos: conceptos en C#  (Leído 19518 veces)

Sixtoex

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 105
    • Ver Perfil
Citar
1) Haz una clase llamada Persona que siga las siguientes condiciones:

Sus atributos son: nombre, edad, DNI, sexo (H hombre, M mujer), peso y altura. No queremos que se accedan directamente a ellos. Piensa que modificador de acceso es el más adecuado, también su tipo. Si quieres añadir algún atributo puedes hacerlo.
Por defecto, todos los atributos menos el DNI serán valores por defecto según su tipo (0 números, cadena vacía para String, etc.). Sexo sera hombre por defecto, usa una constante para ello.
Se implantaran varios constructores:
Un constructor por defecto.
Un constructor con el nombre, edad y sexo, el resto por defecto.
Un constructor con todos los atributos como parámetro.
Los métodos que se implementaran son:
calcularIMC(): calculara si la persona esta en su peso ideal (peso en kg/(altura^2  en m)), devuelve un -1 si esta por debajo de su peso ideal, un 0 si esta en su peso ideal y un 1 si tiene sobrepeso .Te recomiendo que uses constantes para devolver estos valores.
esMayorDeEdad(): indica si es mayor de edad, devuelve un booleano.
comprobarSexo(char sexo): comprueba que el sexo introducido es correcto. Si no es correcto, sera H. No sera visible al exterior.
toString(): devuelve toda la información del objeto.
generaDNI(): genera un numero aleatorio de 8 cifras, genera a partir de este su número su letra correspondiente. Este método sera invocado cuando se construya el objeto. Puedes dividir el método para que te sea más fácil. No será visible al exterior.
Métodos set de cada parámetro, excepto de DNI.
Ahora, crea una clase ejecutable que haga lo siguiente:

Pide por teclado el nombre, la edad, sexo, peso y altura.
Crea 3 objetos de la clase anterior, el primer objeto obtendrá las anteriores variables pedidas por teclado, el segundo objeto obtendrá todos los anteriores menos el peso y la altura y el último por defecto,para este último utiliza los métodos set para darle a los atributos un valor.to,
Para cada objeto, deberá comprobar si esta en su peso ideal, tiene sobrepeso o por debajo de su peso ideal con un mensaje.
Indicar para cada objeto si es mayor de edad.
Por último, mostrar la información de cada objeto.
Puedes usar métodos en la clase ejecutable, para que os sea mas fácil.

los problemas se hacerlos son faciles pero no entiendo algunas cosas que dice el ejercicio:

Los que estan en rojo, es lo que no entiendo, osea no comprendo que hay que hacer  :-\

Pongo el código que yo tengo hecho por si acaso, tengo la clase PERSONA, y la clase Program

Program --> tiene el método Main, es decir Program hace de clase ejecutable(clase ejecutable esta en el ejercicio, pero yo le cambie el nombre a Program)

Persona:
Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EjercicioClase
{
    class Persona
    {
       string nombre;
        int edad;
        string DNI = "34830958";
        const string sexo = "H";
        int peso;
        double altura;
       
        public Persona (char sexo)
       
        {
            comprobarSexo(sexo);
           

       
        }
        public Persona(string nombre,int edad,string sexo)
        {
           
            esMayorDeEdad(edad);
        }

        public Persona(string nombre,int edad,string sexo,int peso,double altura)
        {
            calcularIMC(peso, altura);
            esMayorDeEdad(edad);
        }
        public static void calcularIMC(int peso,double altura)
        {
            double calcularPeso;
           
            calcularPeso =  peso/(altura * altura) ;
            if(calcularPeso < 18)
            {
                calcularPeso = -1;
           
            }
            if (calcularPeso >= 18 && calcularPeso <= 24.9)
            {
                calcularPeso = 0;
            }
         
            if(calcularPeso == -1)
            {
                Console.WriteLine("Tienes muy poco peso para tu estatura");
            }
            if (calcularPeso == 0)
            {
                Console.WriteLine("Tienes peso normal para tu estatura");
            }
            else
            {
                Console.WriteLine("Tienes mucho peso para tu estatura");
            }
           
           
        }   
           public void esMayorDeEdad(int edad)
           {
               bool mayor;
               if (edad >= 18)
               {
                   
                   mayor = true;
               }
               else
               {
                   mayor = false;
               }
               Console.WriteLine("Soy mayor?: "+mayor);
           }

           private void comprobarSexo(char sexo)
           {
           if(sexo != 'H' || sexo != 'M')
           {
               sexo = 'H';
           }
           Console.WriteLine(sexo);
           }
       
           public void toString()
           {
           
           }

           private static void generaDNI()
           {
               int DNI;
               int resultadoA;
               int resultadoB;
               int resultado;
               string[] letras = new string[23] {"T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"};
               Random r = new Random();
               DNI = r.Next(99999999);
               resultadoA = DNI / 23;
               resultadoB = resultadoA * 23;
               resultado = DNI - resultadoB;
               Console.WriteLine(DNI + "-" + letras[resultado]);
               
           }
    }
     

 }

Program:
Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EjercicioClase
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Nombre:");
            string nombre = Console.ReadLine();
            Console.WriteLine("Edad:");
            int edad = int.Parse(Console.ReadLine());
            Console.WriteLine("sexo:");
            string sexo = Console.ReadLine();
            Console.WriteLine("peso:");
            int peso = int.Parse(Console.ReadLine());
            Console.WriteLine("altura:");
            double altura = double.Parse(Console.ReadLine());

            Persona objeto1 = new Persona(nombre, edad, sexo, peso, altura);
            Persona objeto2 = new Persona(nombre, edad, sexo);
           
        }
    }
}

Es decir, todavía no esta completo,todavía falta lo rojo
« Última modificación: 06 de Noviembre 2014, 07:58 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Dudas ejercicio programacion orientada a objetos
« Respuesta #1 en: 06 de Noviembre 2014, 07:57 »
Hola, te doy una referencia:

Modificadores de acceso: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=665:public-private-y-protected-javatipos-de-modificadores-de-acceso-visibilidad-en-clases-subclases-cu00693b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 (tendrías que buscar los modificadores que existen en el lenguaje que estés usando)

Método toString(): http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=666:sobreescribir-metodos-tostring-y-equals-en-java-ejemplos-y-ejercicios-resueltos-comparar-objetos-cu00694b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 (tendrías que ver los detalles en el lenguaje que estás usando)

Este método sera invocado cuando se construya el objeto. -- > Significa que debes incluirlo en el constructor. El código del constructor es el código que se ejecuta cuando se crea un objeto.

Métodos set: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=440:tipos-de-metodos-en-java-metodos-consultores-o-de-acceso-getters-y-modificadores-setters-cu00626b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

mostrar la información de cada objeto: para ello tienes que usar el método toString, que lo que hace es precisamente mostrar la información de un objeto.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".