1- Classes – P.O.O

Paradigmas de Programação

Introdução

  Linguagens de programação são meios de se escrever instruções para o computador, que pode ser um smartphone, tablet, reprodutor de mídia… dentre muitos outros equipamentos eletrônicos.

  Embora exista uma grande variedade de linguagens, elas podem ser classificadas conforme a sua metodologia de implementação, ou seja, sua filosofia para resolver problemas, este estudo é chamado de Paradigma de Programação.

  As linguagens podem ser definidas principalmente de acordo com o paradigma que utiliza, que podem ser Procedural, Imperativa, Orientada a Objetos, Multiparadigma e Estruturada.

  Devido ao rápido crescimento e disseminação da tecnologia, é de extrema importância criar um meio de produzir, corrigir e alterar partes ou um programa inteiro no menor tempo possível. Então deste modo a metodologia mais utilizada atualmente para resolver este problema é a Programação Orientada a Objetos.

Embora seja a mais utilizada na maioria dos projetos, não é exclusiva, e nem obrigatoriamente a que deverá ser usada, mas devido a sua facilidade de entendimento e a demanda do mercado pelo conhecimento dela, que estarei tocando neste assunto.

Este assunto possui um grande acervo na internet, e um grande campo de estudo. Devido a tamanha complexidade, apenas irei manter-me nos princípios básicos para melhor entendimento e aplicação do conhecimento. Para melhor se aprofundar aconselho à compra de livros especializados no assunto.

Primeiras idéias…

Como é programar orientado a objetos?

   Simples! A idéia consiste em idealizar como serão os objetos, e  planejar como funciona a comunicação entre eles,  para assim dar o funcionamento do programa. Alguns programas funcionam apenas com uma ou duas classes.

Antes de tudo é necessário ter idéia dos componentes, quais plataformas, qual serão os meios de entrada de dados. Pois a grande “sacada” que um programador deve fazer em primeiro passo, é aprender a usar os elementos ou melhor dizendo, Classes já existentes na Biblioteca padrão. Não todas, mas pelo menos as mais utilizadas nas construções corriqueiras de aplicativos.

Mas como vamos nos focar em Obj-C, a arquitetura é bem padronizada, como iPhones, iPads e iMac. Sendo importante um estudo sobre como o seu app deve funcionar em cada um deles.

Neste caso utilizarei a Linguagem Objective C para exemplificar os conceitos, e explicar parte da implementação desta linguagem no conceito de POO.

Mas antes, é bom ter conhecimento sobre quais idéias essas Classes foram criadas, a mecânica de relacionamento desses objetos. Então é muito comum vermos termos como Classes, Instâncias de Classes, Variáveis de Instâncias… Então começaremos definindo oque é o OBJETO.

Classes

A Classe é uma maneira abstrata de definir um conjunto de coisas que possuem características encontradas em um grupo ou conjunto.

Confuso não é?! Técnico demais? Vou facilitar as coisas:

Usando o mesmo exemplo que é feito na própria apostila da Apple. Imagina a planta de construção de uma casa… pode ser aqueles BLUEPRINT para quem nao conhece… Isso é um exemplo de classe. Talvez uma das menores representações. A Classe é uma forma de projetar, modelar e informar aos outros como funciona o seu objeto!

Como funciona?

Bem, uma classe pode ser vista como um modelo para a criação de um objeto, assim como a planta é o modelo para a criação de uma casa. É na planta que é descrito o que e como serão os elementos que irão construir uma casa. Outro ponto interessante é que: a mesma planta pode ser reutilizada quantas vezes forem necessárias, e pode também ser alterada para atender alguma especificação. Ou melhor ainda, ela pode ser copiada e somente ter as alterações desejadas incluídas, sem ter a perda da planta original!

Toda essa explicação que dei, é aplicável à Classe. Uma classe modela um objeto e dá informações de como ele será e como ele irá atuar. A Classe pode ser alterada para dar assistência para uma tarefa especifica, gerando uma nova classe que além de já possuir os elementos já declarados, ainda irá receber novas informações para atender a essa especificação. Este processo será visto mais adiante no processo de HIERARQUIA.

Encerrando o exemplo, tenha a seguinte definição para objeto: Você pode morar em uma planta de uma casa? Você pode dirigir um carro que só existe no desenho/projeto?

Acredito que não!

Da mesma forma, que substancialmente falando uma classe não faz nada, apenas serve como um molde para a criação de OBJETOS.  Somente os objetos são capazes de realizar tarefas, e a maior parte do tempo que um programador terá é em trabalhar com eles, para que realizem diversas tarefas.

Enquanto isso na linguagem…

Em Obj-C uma classe é definida em 2 arquivos, assim como em C++, um arquivo com a extensão “ .h ” e outro com a extenção “ .m ”.

O arquivo de extensão .h irá conter informações importantes, tais como o Nome da Classe, de qual classe ela Herda (Se ela é subclasse de alguma outra), a declaração das variáveis de instancia, as declarações de propriedades (@property), e as declarações dos métodos.

No arquivo de extensão .m irá conter a real implementação da classe, bem como o uso das variáveis e propriedades, criação de objetos e outros comandos.

Há mais informações sobre isso que ficaram mais adiante para não se perder o foco.

Foca na P.O.O.

Conceitualmente podemos ter a seguinte visão dos elementos básicos que formam a classe: Nome, Atributos e Métodos.

Explicando os elementos que compõem o Objeto:

Nome da Classe – O nome da Classe deve ser ÚNICO pois ele será a referência para uma classe especifica dentro da biblioteca. Ele é utilizado quando vamos criar uma instância dela. E para outras referências, como na criação de protocolo e extender uma subclasse, ou fazer inclusão de métodos, e diversas outras funções.

Atributos da Classe – Os atributos, são as famosas variáveis que armazenam informações. Em Objective-C você terá uma breve conflito de neurônios, para entender uma que é uma iVar e um @property… que são basicamente a mesma coisa, sendo que uma iVar é usada somente pelos objetos da classe instanciada e as @propertys são variáveis com acesso público, ou seja, outros objetos poderão ter um acesso controlado a elas.

Métodos da Classe – São as ações que o objeto poderão realizar quando é enviada uma mensagem a ele( em Obj-C usasse o termo “enviar uma mensagem”, enquanto em outras linguagens usasse o termo “fazer uma chamada” ou simplesmente “chamar” um objeto para realizar uma tarefa). Existe uma dúvida que assola muitos iniciantes de programação com ao nome Função e Método. Já expliquei isso no Dicionário de Termos, mas vou reforçar no próximo parágrafo.

  Em muitas linguagens , é usado o termo Função para designar o conjunto de tarefas que você quer realizar em um único (ou poucos) comando. E posteriormente, esse termo veio sendo substituído pelo termo Método, nas linguagens mais recentes, que incorporam os conceitos de POO. Sendo praticamente a mesma coisa, ficando apenas como um costume ou hábito de nomeclatura.

Para ficar mais claro irei encerrar esta parte com um exemplo claro da declaração de uma classe em Obj-C:

Arquivo MinhaClasse.h

/*——————————-*/

#import Foundation/Foundation // Importando a biblioteca padrao

@interface MinhaClasse: NSObject { // @interface informa onde começa  a classe e logom vem o nome e a classe Pai da  minhaClasse

NSString *nome;// Aqui temos a Declaração de uma variavel
-(void)imprimeDados; // Aqui temos a declaração do método

@end // indica o fim do documento 

/*——————————-*/

Arquivo MinhaClasse.m

/*——————————-*/

#import "MinhaClasse.h" // informa que este documento esta importando os parametros feitos em .h

@implementation MinhaClasse // informa oficialmente que se trata da implementação e MinhaClasse

MinhaClasse *meuObjeto [[MinhaClasse alloc]init];//Criando um objeto/instância de minhaClasse
                                                 //chamado meuObjeto
[meuObjeto imprimeDados]; // Envio da mensagem para que o meuObjeto faça algo, ou como mais conhecido: Chamando o Método
[meuObjeto release]; // liberação da memoria utilizada pelo objeto.

-(void)imprimeDados{

NSLog(@”%@ e %@”,nome, idade);  // implmentação do método declaradoem MinhaClasse.h, neste caso
                                // usando uma função chamada NSLog, que exibe textos no console do Xcode
}

-(void) dealloc {     //Apos tudo é feita a liberação de memoria.</p>
[nome release];
[super dealloc];
}
@end 

/*—————————*/

Este código não é totalmente funcional, é somente para fins de referencia. Sua mente deve se acostumar com o layout para depois abstrair e você conseguir se concentrar no conteúdo. O layout bem organizado e comentado é importante para passar com clareza e sem problemas o conhecimento envolvido na criação e uso das  classes que você criou, ou até mesmo fazer correções ou reutilizar o código.

Aqui coloquei os dois documentos em um pequeno espaço para que você consiga ver a totalidade dele, logo, no X-Code esse conteúdo fica em documentos diferentes, conforme mencionado no início.

Alguns detalhes foram omitidos deliberadamente por mim para que não fiquem confusos nas mentes de vocês… como uso de self, , @property e outros. Embora eu use os exemplos em Obj-C, ainda não estarei esclarecendo todos os detalhes de forma focada na linguagem. Apenas irei trabalhar em cima dos conceitos de POO.

Posteriormente irei, apresentar um documento totalmente focado na linguagem em sí!

Um forte abraço e bons estudos!! Qualquer dúvida é só entrar no Grupo Objective-C Brasil no Google Groups e deixar la a tua dúvida!!!

Link para:  Grupo ObjectiveC Brasil no Google Groups.

Abração!!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s