Leobreda.Net

HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL

TAG cloud

.net     ajax     api     arquivo     array     asp     asp.net     banco de dados     bing     bloqueio     boas práticas     bug     c sharp     c#     c#     chart     classe     collate     collation     complemento     complementos     componente     conexão sql     connection string     css     cursor location     desativar programas     dom     erro cs0246     explorer     ferramenta de busca     firefox     ftp     função     global.asa     global.asax     google     gráfico     helicon     hospedagem ruim     hostphd     http 301     imagem     include     indexação     inicialização     insert     internet lenta     legendas     limit

Pesquisa por: erro cs0246

Trabalhando com classes em C#

.net, c#, classe, erro cs0246, namespace, reutilização

13 de dezembro de 2008     14:48536 visitas

Trabalhar com classes hoje em dia, fica fácil quando se desenvolve em mais de um ambiente, onde a entrada e saída de resultados é a mesma.

Imagine as seguintes situações em um site de comércio eletrônico:

  • O usuário se cadastra no modo tradicional (Login >> cadastro)
  • O usuário se cadastra antes de finalizar uma compra (COMPRE! >> Finalizar compra >> Não possui cadastro? >> Cadastre-se aqui)

Ficaria difícil criar uma página para cadastro, e duplicá-las vendo que há muitos trechos do código-fonte totalmente iguais.

Resumindo: classe é uma maneira de reutilizar blocos de códigos repetitivos, com entrada e saída de dados.

A seguir, utilizei o conceito de classe para aprendizagem. Ficaria difícil aprender seguindo os tutoriais do Macoratti sem ter pelo menos uma aprendizagem básica.

Esta é uma tela na qual digito o nome e a idade.

 

 

 

Ao clicar no botão Calcular, a página é recarregada, me devolvendo a soma da idade, e concatena o nome na pessoa

 

Arquivo Default.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">

<table style="border: 1px solid #eaeaea; margin: auto;" border="0" cellpadding="0" cellspacing="5">
    <tr>
        <td>Pessoa</td>
        <td><input name="NOME" id="NOME" size="30" runat="server" type="text"></td>
    </tr>
    <tr>
        <td>idade</td>
        <td><input name="IDADE" id="IDADE" size="5" maxlength="5" runat="server" type="text">+ 7</td>
    </tr>
    <tr>
        <td colspan="2" style="text-align: center;">
            <asp:button id="calcularButton" runat="server" text="Calcular" onclick="calcularButton_Click"></asp:button>
        </td>
    </tr>
    <tr>
        <td>Pessoa</td>
        <td id="NOME_FINAL" runat="server">???</td>
    </tr>
    <tr>
        <td>Idade</td>
        <td id="IDADE_FINAL" runat="server">???</td>
    </tr>
</table>

 

Arquivo Default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using pessoa;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void calcularButton_Click(object sender, EventArgs e)
    {
       Pessoa calcular  = new Pessoa();
       calcular.Nome = NOME.Value.ToString();
       calcular.Idade = Convert.ToInt32(IDADE.Value.ToString());
       calcular.SomaIdade();
       calcular.ConcatenaNome();
       IDADE_FINAL.InnerHtml = Convert.ToString(calcular.Idade);
       NOME_FINAL.InnerHtml = Convert.ToString(calcular.Nome);
    }
}

 

Arquivo pessoa.cs

 using System;
using System.Data;
using System.Configuration;

namespace pessoa
{

    public class Pessoa
    {
#region Variáveis locais
        string _nome;
        int _idade;
        int _idadeFinal;
#endregion

        public string Nome { get { return _nome; } set { _nome = value; } }
        public Int32 Idade { get { return _idade; } set { _idade = value; } }
           
          
       public void SomaIdade()
        {
            Idade = _idade + 7;

        }
        public void ConcatenaNome()
        {
            Nome += " Fulano";
        }
    }


}

 

 Funcionamento:

1. Ao clicar no botão Calcular, a função calcularButton_Click é acionada.

 

2. Na função calcularButton_Click:
AMARELO: Criado o objeto calcular, onde é instanciado a classe Pessoa() (veremos mais a frente).
VERMELHO: A propriedade Nome recebe o valor NOME. A propriedade Idade recebe o valor IDADE.
AZUL: chamamos o método SomaIdade() e ConcatenaNome(), que estão dentro da classe Pessoa().
VERDE: mandamos para os objetos da página IDADE_FINAL e NOME_FINAL os valores processados internamente em calcular.Idade e calcular.Nome

 NOTA: Caso você não declarar o namespace pessoa (using pessoa;), poderá ocorrer um erro de que a Classe Pessoa() não existe:

 

Erro de Servidor no Aplicativo '/'.

Erro de Compilação

Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente.

Mensagem de Erro do Compilador: CS0246: Nome de espaço para nome ou tipo 'Pessoa' não pôde ser encontrado. Precisa de uma diretiva using ou de uma referência de conjunto de módulos (assembly)?

Erro de Origem:

 
Linha 18:     protected void calcularButton_Click(object sender, EventArgs e)
Linha 19: {
Linha 20: Pessoa calcular = new Pessoa();
Linha 21: calcular.Nome = NOME.Value.ToString();
Linha 22: calcular.Idade = Convert.ToInt32(IDADE.Value.ToString());

Arquivo de Origem: d:aspnet esteDefault.aspx.cs    Linha: 20

 

 

Para contornar este erro, declare o namespace pessoa no arquivo Default.aspx.cs:

 

 

3. Classe pessoa:

VERDE: declaração de variáveis locais.
AMARELO: atribui o valor das variáveis locais através dos Atributos (calcular.Nome e calcular.Idade) da classe Pessoa().
VERMELHO: Métodos da classe: SomaIdade() altera o valor da propriedade calcular.Nome, e ConcatenaNome altera o valor da propriedade calcular.Pessoa.

Para visualizar no modo gráfico como ficou sua classe, clique com o botão direito no arquivo pessoa.cs, e clique na opção View Class Diagram:

Para ser mais claro, os métodos de uma classe, internamente, se resumem a funções/procedimentos na qual realizam determinadas tarefas de uma forma automatizada. Digo forma automatizada porque com o tempo, estaremos utilizando-as constantemente, que para nós, não interessa o funcionamento interno; basta fazer no que lhe for determinado e nos traga o resultado final.

2010 - Leonardo Breda