Artigonal.com - Leia e Publique Artigos
Diretório de Artigos Gratuitos
01.12.2008 Login Cadastro Olá
E-mail:
Senha:
Salve meus dados neste computador 


Desmistificando as Classes

Por: Caio Azevedo Ranking do Autor Azul | Publicado em: 14-02-2008 | Comentários: 0 | Acessos: 166 | Avaliação:  (80) Ranking do Artigo Azul (?)

A Linguagem C# é totalmente baseada no modelo de programação orientada à objetos, sendo assim, profundos conhecimentos em alguns de seus elementos principais são de fundamental importância para que possamos extrair o máximo do modelo/linguagem, sobretudo aqueles desenvolvedores acostumados com outros modelos tais quais, programação estruturada e orientada à eventos.

Dentre esses elementos temos as Classes que podemos classificar como o objeto fundamental da OOP [Object-Oriented Programming], uma vez que é impossível obtermos um programa em C# (ou em qualquer outra linguagem OO) sem que tenhamos pelo menos uma classe.

Como tantos outros conceitos na informática, as classes foram inspiradas no “mundo real” e podemos associá-las ao ato de denominar uma entidade que compartilha alguns comportamentos e que possuem um conjunto de propriedades comuns. Fazendo um paralelo com nossa gramática, seria como os substantivos em seu conceito mais primitivo [a palavra que designa seres em geral], onde, por exemplo, usamos o substantivo COMPUTADOR, quando queremos referenciar um objeto formado por monitor, teclado, processador [propriedades], capaz de ligar, desligar, instalar softwares, compilar programas, acessar a internet, manipular documentos [comportamento], e aqui está a grande sacada dos substantivos, sua capacidade de facilitar a comunicação entres as pessoas, ao resumir numa única palavra um conjunto de características e ações que constituem o ser ou objeto.

Bom, mas parodiando um amigo meu, fã da série MATRIX, “voltando ao mundo virtual”, as linguagens orientadas a objetos baseiam-se no mesmo princípio dos substantivos, utilizando as classes como seu elemento fundamental, afinal, são nelas que estão contidos dados e funcionalidades que compõem qualquer programa de computador, independentes de linguagem, modelo de programação e plataforma. Vale ressaltar que as classes não estão restritas a objetos concretos [computador, carro, pessoa], podemos utilizá-las para implementar conceitos abstratos tais como o Tempo.

Finalmente definiríamos uma classe, como a entidade capaz de encapsular dados, sob a forma de campos, e funcionalidades, os métodos, que manipulam esses dados, disponibilizando sua estrutura para outras entidades que a utilizam para realizar uma ou mais tarefas que um assembly C# se propõe.

A estrutura de uma Classe

Pois bem, e como codificar essa maravilha do mundo da OOP. A figura abaixo apresenta a estrutura de uma classe com os elementos possíveis que a mesma suporta, que quando bem utilizados, tornam suas aplicações seguras, performáticas, estáveis e legíveis, enfim, os adjetivos essenciais para uma solução de boa qualidade, capaz de tornar seu time de desenvolvimento competente. O objetivo, nesse e em próximos artigos é detalhar cada um desses elementos, com dicas e sugestões de utilização dos mesmos.

Pseudocódigo 1 – Estrutura de uma classe.

No pseudocódigo acima iniciamos com uma referencia ao namespace System, bem como a declaração do nosso namespace imasters [maiores detalhes ver artigo, Usando Namespaces Profissionalmente]. Sem dúvida uma instrução que deve chamar atenção aqui, é a ultima linha após o terminador de escopo da classe, onde temos a presença de um ponto e virgula [;], trata-se de uma herança do C++ e é facultativa no C#, particularmente acredito que pouca gente utilize essa sintaxe, salvo os herdeiros do C++, movidos ainda pela força do hábito.

Em nossa “classe” temos um conjunto de elementos que definem seu comportamento, e que são conhecidos como Class Members, e segundo a terminologia oficial da Microsoft teríamos dois grupos principais, os Data Members e os Functions Members.

Classificamos como data members, aqueles que armazenam os dados para a classe, e ai teríamos, os fields, consts e events.

Entendemos por Field [Campo], qualquer variável associada à classe cuja função é armazenar valores utilizados em suas funcionalidades. Os Fields apresentam pequenas mudanças em seu escopo e comportamento, representados em tipos específicos – Local Variables e Read-Only Fields.

As Consts [Constantes], não deixam de ser um Field, mas pela particularidade de manter seu valor invariável, merece essa denominação.

Events [Eventos], sinceramente, não entendi esse elemento classificado como data member, mas enfim, eles são responsáveis por notificar uma entidade na ocorrência de alguma ação, como por exemplo a alteração do valor de um field ou propriedade da classe – esses elementos são parecidos, mas implementados diferentemente dos eventos do Visual Basic 6.0.

Por outro lado, os function members são aqueles que provem as funcionalidades da classe, e manipulação dos dados que a constituem, para tal temos os métodos, propriedades, construtores, indexers, etc.

Os métodos são como as funções/sub do velho VB, estando no corpo de sua implementação boa parte da inteligência de nossa classe, em C# não temos construções do tipo Function e Sub, temos sim, métodos que retornam ou não valores para os clientes. Quanto à utilização podemos ter métodos instanciáveis ou estáticos.

Propriedades, aqui temos uma construção interessante, acredito que muita gente ache que as propriedades deveriam ser tratadas como Data Members, no entanto apesar de na utilização serem bem parecidas com os Fields Públicos, as properties, são uma evolução dos mesmos, inclusive sendo conhecidos como Smart Fields, e sua implementação é feita com pelo menos um dos métodos GET/SET, que como qualquer método suporta alguma inteligência no código.

Construtores e Destrutores, também são métodos, só que com uma particularidade, eles são inacessíveis [diretamente] aos clientes da classe, e são executados no momento de sua inicialização e destruição, são muito úteis e recomendados para inicializar valores de campos, bem como liberar recursos alocados [um arquivo texto, uma conexão com BD, etc], importante ressaltar que os destrutores tem sua execução associada ao Garbage Collection o que torna sua execução não deterministica.

Agora temos os Indexers, que juntamente com as properties, não fazem parte da essência da OOP, no entanto sua implementação permite que um objeto seja acessado como se fosse um Array, assim, se as propriedades são consideradas Fields inteligentes, os Indexers seriam as classes inteligentes.

Finalmente, gostaria de esclarecer o conceito daquilo que geralmente é confundido com uma classe, que são os objetos. Na verdade trata-se de elementos totalmente distintos, e ainda que relacionados, a classe é a estrutura, um esqueleto, um modelo, enquanto que um objeto representa uma classe em um dado momento de sua utilização, ou seja, o objeto é uma instancia da classe, como uma variável qualquer, aliás, costumamos dizer que em C# tudo é objeto, seja uma simples variável do tipo Int, seja um objeto mais complexo utilizado na manipulação de sockets. Por exemplo, quando nos referimos a classe programador, estamos denominando um elemento genérico [um substantivo], mas quando tratamos do objeto programador, estamos direcionando nosso foco para um elemento especifico [o substantivo precedido de um artigo o ou a], que possui três características fundamentais, Identidade [ Que distingue um objeto de todos os demais, ID = 2516484], Comportamento [ O que torna um objeto realmente útil, Codifica C#] e Estado [ Representa a situação instantânea de suas características, Está de Férias].

É isso ai pessoal, não restam dúvidas que esse assunto é muito amplo, tentarei ser o mais claro e objetivo possível, com artigos curtos e focados, onde, com exemplos e comparações tentaremos esclarecer os principais conceitos e funcionalidades de Programação Orientada à Objetos e sua implementação com o C#, que tem, é claro, suas particularidades.

Aparentemente esses conceitos podem parecer enfadonhos, mas garanto que seu entendimento representa ganhos significativos quando na implementação de seus programas tornando-o um desenvolvedor diferenciado. Como sempre estou aberto à críticas e sugestões para que a cada coluna possamos apresentar um conteúdo interessante e acima de tudo funcional para nossos leitores.

Até a próxima!

Avalie este artigo: Current: 0 / 5 stars - 0 vote(s).

Tags do Artigo: Class, Classes, Programação

Fonte Artigos - Artigonal.com

Imprima este Artigo Imprimir artigo   Envie o Artigos a um amigo Enviar a um amigo   Publique este Artigo no seu site Publique este Artigo   Mande mensagem ao Autor Mensagem ao autor  
Caio AzevedoPerfil o autor:

Caio Azevedo é arquiteto de softwares, especialista em soluções corporativas nos ambientes intranet/internet. Graduado em Ciência da Computação, Mestrando da Escola Politécnica da USP. Certificações Microsoft [MCP, MCAD e MCSD .NET]. Gestor da célula Microsoft da Magna Sistemas Consultoria (www.magnasistemas.com.br).

Submeter artigos se tornou um dos meios os mais populares de gerar links de qualidade e tráfego para o seu site. CADASTRE-SE JÁ, É DE GRAÇA!

Comentários

Comente este artigo Comente este artigo
Nome
E-mail:
Comentário
Digite o código de segurança: Captcha


Artigos Relacionados

Tags – O Que São
Por: Ruy Miranda | 05/02/2008 | Web Design
Para que você possa entender o que são as tags, vamos começar explicando o significado da palavra. Tag em inglês (a maioria das palavras na linguagem do computador são originadas do inglês) significa etiqueta, rótulo. E etiqueta é algo que colocamos em objetos, mercadorias, arquivos, etc. para nos ajudar na lida diária, para nos orientar.

A Personalidade, o Comportamento Dos Marginalizados E Suas Conseqüências
Por: Adriano Martins Pinheiro | 22/07/2008 | Desigualdades Sociais
A personalidade é composta por vários fatores ao longo da vida. Uma pessoa é atualmente fruto do que foi construído anteriormente, ou seja, como foi construída sua personalidade. O meio social, a família, as influências do grupo social, a educação e as experiências, integram-se na formação do indivíduo e influenciam seu comportamento por toda sua vida.

Meta Tags – O Que São
Por: Ruy Miranda | 05/02/2008 | Web Design
Meta é um prefixo que entra na composição de muitas palavras, como por exemplo, metabolismo, metabólito. (Não confundir com o substantivo meta, popular entre nós, e que, entre outras coisas, significa aquele espaço que fica entre três páus ou hastes, e onde os jogadores de futebol fazem os gols.) Quando se fala em "meta tags" o prefixo fica separado do substantivo tag.

Algumas Coisas Que Aprendi Para Obter Sucesso
Por: Adriano Martins Pinheiro | 03/08/2008 | Carreira
Tenha metas claras e objetivos bem definidos. Não se perca em muitos pensamentos, sonhos e fantasias, a vida não é uma novela, não é um filme de Hollywood. Nada será tão fácil e tão espetacular como assistimos. A vida nos oferece dificuldades e imprevistos, temos que estar firmes e com caminhos bem traçados.

Meta Tags: Importância para os Mecanismos de Busca
Por: Ruy Miranda | 05/02/2008 | Web Design
Pode-se dizer que as meta tags são importantes para todos os mecanismos de busca. Elas já tiveram importância maior em um passado recente. A ordenação dos sites, principalmente nos diretórios, dependia muito das meta tags.

Por Que Aprender C++ ?
Por: Basilio Miranda | 29/10/2008 | Tecnologia
C++ é uma linguagem de propósito geral que pode ser utilizada para qualquer finalidade e em múltiplas plataformas C++ é uma linguagem flexível, multiparadigma, que permite que se utilize tanto programação orientada a objetos como programação genérica C++ é a linguagem de programação mais completa que já foi criada, sendo também, uma linguagem altamente expressiva e lógica. E por isso muitas das linguagens que foram criadas depois (Java, por exemplo) são, de algum modo, inspiradas por C++.

Tag Título: Número de Caracteres e a Posição da Marca da Empresa
Por: Ruy Miranda | 05/02/2008 | Web Design
A tag título deve ter um número limitado de caracteres. Existem pequenas diferenças entre Google e MSN de um lado, e Yahoo de outro, em relação ao número limite. A posição da marca da empresa pode ser relevante no posicionamento das palavras que preencherão o número de caracteres recomendados.

Exemplo de otimização de armazenamento de dados
Por: Caio Azevedo | 14/02/2008 | Informática
Esse artigo tem como objetivo propor a solução de um problema no qual deparamos com razoável freqüência, e se você ainda não o teve pela frente, provavelmente ainda o terá especialmente se você desenvolve aplicações comerciais.

Últimos Programação artigos

Phpmyadmin - Administrando Tabelas
Por: Amilcar Junior | 12/10/2008
Usado no gerenciamento de dados no MySQL administração de banco de dados e tabelas. Vamos nessa matéria abordar o script phpMyAdmin , usado no gerenciamento de dados no MySQL. Para fazer o download da última versão, vá nesse link. Você precisa ter instalado em sua máquina o Servidor Apache, o PHP e o MySQL para usar o phpMyAdmin. Após seu download e tudo funcionando corretamente ...

Mysql - Contruindo Tabelas
Por: Amilcar Junior | 12/10/2008
O uso direto do MySQL dentro do PhpMyAdmin construido tabelas.

Recordset - Dreamweaver Cs3
Por: Amilcar Junior | 12/10/2008
Uso de Recordset para ligar um banco de dados a uma página dinâmica no Adobe dreamweaver.

Segurança - Trocando A Porta Do Sql Server 2000
Por: Tulio Rosa | 24/05/2008
Existem várias configurações que podemos fazer para garantir a segurança do banco de dados, entre elas temos a opção de alterar a porta default utilizada nas conexões, fazendo isso somente as solicitações direcionadas a nova porta terão respostas, as demais receberão erros como se o banco não existisse.

Data Por Extenso
Por: Yunis Carvalho | 15/04/2008
Vamos descrever como colocar a data por extenso em um site e o detalhe é que a data será atualizada automaticamente, de acordo com a data do sistema do servidor que está hospedado o site.

O Porque E Como Do Siw
Por: Ruben Zevallos Jr. | 08/03/2008
Já vi muitos projetos para Internet irem para o buraco, porque o ele teria muito dado dinâmico, relatórios etc, mas foi totalmente guiado por profissionais de design e não de sistemas.

Um Pouco De Siw
Por: Ruben Zevallos Jr. | 08/03/2008
Muitas pessoas já me perguntaram o que é SIW. SIW é a sigla de Sistemas com Interface Web. O SIW é o desenvolvimento de Sistemas normais utilizando a Interface Web, que tem diversas vantagens perante a interface gráfica normal

Como instalar e configurar o Php5 e o Apache
Por: Alexandre Silveira | 21/02/2008
Este artigo trata sobre a instalação e configuração do php5 e o apache.

Mais artigos de Caio Azevedo

Especial sobre .Net
Por: Caio Azevedo | 14/02/2008 | Programação
Estamos a beira de uma revolução, a plataforma .Net é um fato, boa parte dos desenvolvedores seguirá esse caminho. Enquanto isso na “vida real” nos deparamos todo dia com a boa e velha formula: ASP, VB 6.0/COM+, JavaScript, SQL Server. E é nesse ambiente que tenho dedicado meu tempo nos últimos seis meses, e o que pretendo nesse espaço é compartilhar o que aprendemos nesse período.

Fundamentos teóricos sobre C#
Por: Caio Azevedo | 14/02/2008 | Programação
Partiremos dos fundamentos teóricos da tecnologia, e através de exemplos tentaremos prover soluções para as situações do nosso dia a dia. Seria interessante contar com a interatividade de vocês leitores com críticas e sugestões sobre os assuntos abordados.

MSIL - Microsoft Intermediate Language
Por: Caio Azevedo | 14/02/2008 | Programação
Minha proposta nesse espaço inicialmente seria de analisarmos a linguagem C#, sua sintaxe, implementações dos conceitos de orientação a objetos, etc. Para tal ,acredito que a implementação de programas console [aqueles que rodam no DOS], seja a melhor alternativa nesse primeiro momento.

Usando Namespaces profissionalmente
Por: Caio Azevedo | 14/02/2008 | Programação
O que a princípio aparenta ser mais um dos novos conceitos do .net, veremos que o mesmo tem muito a ser explorado, e assim faremos, tentando extrair todo o potencial dessa funcionalidade do Framework, além de aproveitarmos a oportunidade para analisar a diretiva using[Imports, seu correspondente no VB.NET].

Problemas com modelos de aplicações web
Por: Caio Azevedo | 14/02/2008 | Programação
Em minhas recentes atividades como arquiteto de soluções .net, deparei em alguns clientes com uma situação no mínimo inusitada...

Exemplo de otimização de armazenamento de dados
Por: Caio Azevedo | 14/02/2008 | Informática
Esse artigo tem como objetivo propor a solução de um problema no qual deparamos com razoável freqüência, e se você ainda não o teve pela frente, provavelmente ainda o terá especialmente se você desenvolve aplicações comerciais.

Categorias do Artigo





Webmasters

Leitor de RSS
RSS
Links

Business Info

Anunciar