Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clauido José

Classe

Recommended Posts

Boa noite pessoal sou novato com c# estou fazendo um sistema para calcular a média de nota de aluno bom criei uma classe chamada calcMedia passeio os arqumentos dessa classe criei um metodo chamado Media, Situacao, e Classificacao meu problema é seguinte o metodo media fucniona ok agora os outros dois SItuacao e Classificacao não são chamado vou postar a chamada da classe e e classe em si.

        private void button4_Click(object sender, EventArgs e)
        {
            // bloco protegido de erro
            try
            {
                
                // cria objeto da classe CalcMedia passando para o construtor
                // as quatro notas
                CalcMedia cm = new CalcMedia(updN1.Value, updN2.Value,updN3.Value, updN4.Value);

                // Mostra o valor da média, situação e a classificação
                // utilizando a propriedades Read-Only que se autocalculam
                // usando o método get
                lblMedia.Text = cm.Media.ToString();
                lblSit.Text = cm.Situacao;
                lblClass.Text = cm.Classificacao;

            }
            // bloco de tratamento de erro
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LibClasses
{
    public class CalcMedia
    {
        // criar as propriedades Nota1, Nota2, Nota3 e Nota4
        // todas do tipo decimal
        public CalcMedia( decimal _nota1, decimal _nota2, decimal _nota3, decimal _nota4)
        {
            this.Nota1 = _nota1;
            this.Nota2 = _nota2;
            this.Nota3 = _nota3;
            this.Nota4 = _nota4;
        }

        private decimal _nota1; // CTRL R+E

        public decimal Nota1
        {
            get { return _nota1; }
            set
            {
                if (value >= 0)
                    _nota1 = value;
                else
                    throw new Exception("Nota 1 fora do intervalo");
            }
        }

        private decimal _nota2;

        public decimal Nota2
        {
            get { return _nota2; }
            set
            {
                if (value >= 0)
                    _nota2 = value;
                else
                    throw new Exception("Nota 2 fora do intervalo");
            }
        }

        private decimal _nota3;

        public decimal Nota3
        {
            get { return _nota3; }
            set
            {
                if (value >= 0)
                    _nota3 = value;
                else
                    throw new Exception("Nota 3 fora do intervalo");
            }
        }

        private decimal _nota4;

        public decimal Nota4
        {
            get { return _nota4; }
            set
            {
                if (value >= 0)
                    _nota4 = value;
                else
                    throw new Exception("Nota 4 fora do intervalo");
            }
        }
        // propriedades de resultado -----------------------
        public decimal Media
        {
            get { return (_nota1 + _nota2 + _nota3 + _nota4) / 4; }

            // não tem método SET porque esta propriedade não
            // pode receber valor, só pode ser consultada
            set
            {
                if (value >= 0 && value <= 10)
                    _nota4 = value;
                else
                    throw new Exception("Nota 4 fora do intervalo");
            }
        }

        private string _situacao;

        public string Situacao
        {
            get { return _situacao; }
            set {
                if (Media >=5)
                    _situacao = "APROVADO"; 
                else
                    _situacao = "REPROVADO"; 
            }

        }

        private string _classificacao;

        public string Classificacao
        {
            get { return _classificacao; }
            set 
            {
                if (Media <= 2)
                    _classificacao = "Péssimo";
                else if (Media > 2 && Media <= 4)
                    _classificacao = "Ruim";
                else if (Media > 4 && Media <= 6)
                    _classificacao = "Regular";
                else if (Media > 6 && Media <= 8)
                    _classificacao = "Bom";
                else if (Media > 8)
                    _classificacao = "Ótima";
            }
        }

    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah ta...

Tipo, você não está 'setando' situação nem classificação... Só está chamando o get;

Quando você faz assim:

lblClass.Text = cm.Classificacao;

Ele chama o método GET da propriedade;

Quando faz assim:

cm.Classificacao = "um texto qualquer";

Ele faz chamada ao método SET.

E como no seu exemplo não tem chamada ao SET, a variável privada sempre será nula;

Faz assim:

 private string _situacao;

        public string Situacao
        {
            get
            {
                if (Media >= 5)
                    _situacao = "APROVADO";
                else
                    _situacao = "REPROVADO";
                return _situacao;
            }


        }


        private string _classificacao;

        public string Classificacao
        {
            get
            {
                if (Media <= 2)
                    _classificacao = "Péssimo";
                else if (Media > 2 && Media <= 4)
                    _classificacao = "Ruim";
                else if (Media > 4 && Media <= 6)
                    _classificacao = "Regular";
                else if (Media > 6 && Media <= 8)
                    _classificacao = "Bom";
                else if (Media > 8)
                    _classificacao = "Ótima"; 
                return _classificacao; }
            
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.