Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Sixtoex en 05 de Noviembre 2014, 19:30

Título: Dudas ejercicio programacion orientada a objetos: conceptos en C#
Publicado por: Sixtoex en 05 de Noviembre 2014, 19:30
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
Título: Re:Dudas ejercicio programacion orientada a objetos
Publicado por: Ogramar 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