Cachina’s Programming Blog


Orientação a Objetos simples assim!

Posted in Dicas,JAVA,PHP,PYTHON por Mayron Cachina em fevereiro 28, 2008
Tags: , , ,

Pessoal trago esse tutorial fantástico sobre Orientação a Objetos do Fábio Santiago (http://www.devmedia.com.br/articles/viewcomp.asp?comp=3254&hl=), está muito interessante mesmo, e simples, ótima referência para estudo….

Antes de nos aventurarmos no universo dos Games ou da Web, precisamos conhecermos bem, alguns fundamentos básicos. A POO (Programação Orientada a Objetos) não é um paradigma ou conceito de desenvolvimento de software moderno. Há algumas décadas esses conceitos existem, e aos poucos foram conquistando adeptos na Engenharia de Software. Esses adeptos são engenheiros de sistemas, programadores e analistas, preocupados com reusabilidade, legibilidade e uma significativa elevação no nível de abstração dos seus softwares.

Próximos artigos

Framework Java sob Arquitetura Dirigida a Modelos (MDA)

Em breve exploraremos o maravilho mundo dos jogos eletrônicos com foco no desenvolvimento para dispositivos móveis baseado na plataforma Java Me (Java Micro Edition).

Não é o foco desse artigo, entrar em detalhes históricos, nem mesmo fazer comparativos de tecnologias.

Esse documento foi escrito especialmente para programadores ou curiosos que estejam estudando ou migrando para o mundo dos objetos. Trata-se de um artigo básico, técnico e prático.

Programe seus objetos comparando com a vida real. Aparentemente isso é muito abstrato ou complicado a primeira vista. Mas estudaremos aqui, através de exemplos, como tornar essa analogia mais natural.

Bom, se você ainda está lendo, passou no filtro para o perfil de leitor desse artigo inicial. ?

Vamos conceituar alguns tópicos, porém depois, faremos analogias , exemplos e exercícios de fixação com o intuito de deixar o mais claro possível. Afinal de contas, como diria um ex-professor meu, “nada na vida…, tudo é um exemplo” (Plácido, Unifor).

Classe

Nada mais é, do que a especificação do que um dia poderá vim a ser um objeto. Caaaaaaaaalma, vai já ficar bem claro num exemplo prático. Afinal de contas: “na prática a teoria é outra”.

Objeto

Trata-se da instância de uma classe. Ainda conto com sua paciência. Logo logo perceberás que isso é a coisa mais linda do mundo…

Nesse momento gostaria que você esquecesse por um minuto tudo que você sabe de programação. Tente. E isso não é simples, deletar (mas não com shift+del) sua experiência e vícios de linguagens de desenvolvimento de software. Além disso, um pouco de criatividade cairia bem:

Bom, vamos lá!

Imagine uma forma (molde) de bonecos de gessos. Pois bem, essa é nossa classe ou tipo, ou seja, define o formato, tamanho e diversos outros aspectos dos objetos fabricados, no caso, os bonecos de gesso. Percebeu a diferença? A classe é um molde para os objetos. Quando se diz: “Instância de uma classe ou tipo”, nada mais é do que o objeto dessa classe ou tipo.

 

Mundo

Java

Molde

Classe

Boneco de Gesso

Objeto

O molde é sempre o mesmo, porém os objetos por ele gerados podem ter características das mais variadas, mas respeitando a estrutura básica do molde, ops!, da classe ou tipo.

Imagine um molde (classe ou tipo) de Samurai. Continue imaginando… Vamos, com esse molde, criar três objetos:

Samu1

Cor = Laranja

Samu2

Cor = Rosa

Samu3

Cor = Azul

Diz-se que, o samu1, samu2 e samu3 são objetos do tipo Samurai.

Observe que agora nossos pequenos objetos possuem característica, no caso, a cor. Mas poderíamos possuir várias outras, mais específicas, tais como, cor dos olhos, do cabelo, raça do indivíduo, etc. Tais características em OO (Orientação a Objetos) chamam-se atributos do objeto.

Atributos definem o estado do objeto em um determinado instante, por exemplo: Imagine um objeto do tipo Pessoa (é a classe ou tipo), com os seguintes atributos: corOlhos, corCabelo, sexo e tipoSanguineo. Então assuma também que os valores para esses atributos são respectivamente: azuis, preto, feminino e tipo A. Bom, nunca se sabe quando uma mulher vai trocar a cor do cabelo, mas podemos, nesse instante, assumir que o estado para esse objeto é (azuis, preto, feminino e tipo A) porém se amanhã tiver um casamento ou uma festa na agenda desse nosso objeto 🙂, muito provavelmente seu estado será alterado, na cor do cabelo (corCabelo) ou mesmo dos olhos (corOlhos), nunca se sabe! Machismo a parte, o fato é, se um ou vários atributos forem alterados, diz-se que seu estado também foi.

 

Gostaria, nesse momento, que você relesse todo o texto acima até que fique bem claro tudo que foi explicado lá.

Ok! Até agora, espero que estejam bem claros os seguintes conceitos:

  • Classe

  • Tipo
  • Objeto
  • Atributo
  • Estado de um Objeto

Existe ainda, mais um detalhe interessante e bastante importante sobre objetos, que gostaria de explicar antes de “cairmos matando” no código.

Lembre-se da classe Pessoa citada anteriormente, pois bem, além dos atributos, os objetos dessa classe também possuem comportamentos, tais como: andar, dormir, acordar, etc. Esses comportamentos, em OO, chamam-se métodos.

Resumindo:

  • Os atributos de instância (ou de objeto) definem o estado desse objeto.

  • Os métodos de instância (ou de objeto) definem os comportamentos desse objeto.

Agora vamos deixar um pouco as analogias de lado e pôr em prática (Projeto Piloto) o que aprendemos, porém, antes, precisamos definir algumas regras de sintaxe do Java, tais como:

  • O que são e quais são os tipos primitivos?

  • O que é variável e referência?
  • Preparando o ambiente para pôr a mão na massa.
  • Como criar uma classe?
  • O tipo String;
  • E os atributos e métodos?
  • Projeto piloto

Então…comecemos do começo:

  • O que são e quais são os tipos primitivos?

Os tipos primitivos (não são classes) correspondem a dados mais simples (não são objetos) e independem da plataforma a qual “rodará”. Logo mais tudo ficará bem claro. Basta, por hora, entendermos quais são esses tipos e quais os valores que assumem:

 

Tipos Primitivos

Descrição

boolean

Poderão assumir os valores TRUE (verdadeiro) ou FALSE (falso).

byte

Nesse caso, o domínio é o universo dos números INTEIROS. O que difere um dos outros é o limite desse número. Portanto o byte terá como valor máximo, 127, o short, 32.767 e cada qual com seu limite MAXIMO.

short

int

long

float

Contemplam os números em notação de ponto flutuante normalizada em precisão simples. Em outras palavras: Os números decimais.

double

char

Serve para a armazenagem de dados alfanuméricos (somente um caractere), que por sua vez são representados por inteiros.

Obs1.: Observe que todo tipo primitivo possui a primeira letra em minúsculo.

Obs2.: Existe uma série de particularidades (“largura”, classificação, etc.) relacionadas a cada tipo desses, no entanto gostaria de abstraí-las do leitor por motivos didáticos. Na hora certa a gente “arrocha o nó”. ?

  • O que é variável e referencia?

Relembre o conceito de objetos.

Agregue a esse conceito, o fato de que todo objeto criado ficará armazenado em memória principal, ou seja, a sua memória RAM.

Agora imagine: Como eu poderia acessar esse objeto? Quando falamos em acesso, nos referimos a poder acessá-lo de modo a alterar seu estado ou invocar um determinado comportamento desse objeto. Isso é possível graças as referencias, pois elas possuem um ponteiro (espécie de link) ao objeto em memória. Como isso seria em programação?

As variáveis têm a mesma funcionalidade, no entanto não apontam (ou não referenciam) objetos, e sim possuem um tipo primitivo.

Existem dois conceitos aqui: Declaração e Inicialização.

Veja como declaramos, em Java, uma variável chamada idade do tipo inteiro:

int idade;

Simples não?

Sempre seguirá esse padrão: primeiro o tipo, que pode ser um tipo primitivo ou um tipo de referência (classe), depois o nome da referencia ou variável.

Aqui um exemplo de declaração de uma referencia:

Samurai samu1;

Samurai é o tipo da referência, e samu1 é o nome dessa referencia;

A Inicialização, como o próprio nome já nos dá uma dica, nada mais é do que inicializar essa variável ou referência com alguma coisa, por exemplo:

int idade;

Idade = 26;

Observe que para inicializarmos uma variável ou referencia, precisamos, antes, declará-la.

Podemos, ainda, em uma mesma linha declarar e inicializar ao “mesmo tempo”. É apenas uma maneira diferente de fazer a mesma coisa:

int idade = 26;

E para referencia?

Simples, veja a seguinte linha de comando. Lembre-se do tipo antes exemplificado: Samurai:

 

Samurai samu1 = new Samurai();

Explicando:

      • Essa é a maneira de instanciarmos (ou criarmos em memória) um objeto do tipo Samurai e ao “mesmo tempo” amarrá-lo a uma referência também do mesmo tipo, ou seja, diz-se que samu1 referencia esse objeto criado.

      • Primeiro vêem a tipo (Samurai) da referência, depois o nome da referência (samu1), depois o operador de atribuição (=), logo em seguida o operador de “instanciação” (new) e por ultimo, a chamada do construtor da classe do objeto que estamos criando (Samurai()). Abstraia-se, por enquanto, do que seria o construtor.
      • Nem sempre o “computador” executará os comandos da esquerda pra direita, assim como lemos. Nesse caso a primeira coisa a ser executada é o comando new Samurai(), o qual fará com que um objeto do tipo Samurai seja criado (ou instanciado) em memória, logo em seguida, esse objeto é atribuído a referencia samu1 (Samurai samu1 =), essa por sua vez será seu elo (do programador) de acesso ao objeto criado, pois é através dela, que poderemos manipular esse objeto.
      • Observe que, por convenção, toda classe em Java, vêem com a primeira letra em maiúsculo: Samurai.
  • Preparando o ambiente para pôr a mão na massa.

    • Java SDK, Standard Edition

SDK (software development kit) possui as ferramentas para você começar o seu desenvolvimento em Java. Você pode encontrar todas as versões e pacotes do SDK na página http://java.sun.com/jdk/. Caso tenha dificuldades com inglês, vá direto à http://java.sun.com/javase/downloads/index.jsp e escolha Get the JDK download. Na página que aparecerá escolha o arquivo para seu sistema operacional, por exemplo, caso você seja usuário windows o nome do arquivo que você deverá baixar terá o nome mais ou menos assim: jdk-1_5_0_08-windows-i586-p.exe (java 1.5 update 8 para windows).Obs.: Até o dia em que esse artigo foi escrito, esse caminho funcionava🙂 Recomendação: Tutorial -> http://java.sun.com/tutorial

    • IDE

Estou considerando que você não está usando nenhuma IDE, ainda!.

IDE? Sim, IDEs são ferramentas para agilizar o trabalho com programação, no caso, para java, existem dezenas e dezenas, tais como: Eclipse, NetBeans, JBuilder, JCreator, etc… Eu, particularmente, recomendo o Eclipse 3.2.1 (http://www.eclipse.org/downloads/). Além de free (Open) e gratuito é excelente!

 

Depois que terminar esse artigo, recomendo que baixe o Eclipse 3.1.x ou superior, é simples. Pois os próximos artigos vão considerar que você está utilizando-o.

Bons estudos sobre eclipse:

Como ainda não utilizamos IDE, vamos usar o bloco de notas para fazermos nossa primeira classe.

  1. Crie a seguinte estrutura de pastas c:projetoshello

    Abra o bloco de notas

  2. Vamos criar a classe Samurai. Para isso digite no bloco de notas:

public class Samurai {

}

  1. Pronto!!! Salve dentro de c:projetoshello com o nome Samurai.java, pois precisa ter o mesmo nome da Classe.
  2. Agora precisamos gerar o bytecode, ou seja, o binário do java (.class), arquivo que será interpretado (“executado”)
  3. No windows, vá em ‘iniciar’ -> ‘executar’ -> digite cmd. O Prompt será exibido.
  4. Vá em c:projetoshello.
  5. Digite dir. Será exibida, uma lista contendo os arquivos dessa pasta. Até o momento deverá constar somente o Samurai.java.
  6. Digite o comando para compilar do Java javac Samurai.java. Nesse momento você observará, se der outro dir, que um novo arquivo foi criado, o Samurai.class.

Parabéns a classe Samurai foi corretamente criada. É claro que ainda não acrescentamos, a ela, nenhuma funcionalidade. Por enquanto somente temos uma classe vazia.

Resumindo. O que aprendemos até agora:

  • Classe

  • Tipo
  • Objeto
  • Atributo
  • Estado de um Objeto
  • Os atributos de instância (ou de objeto) definem o estado desse objeto
  • Os métodos de instância (ou de objeto) definem os comportamentos
  • O que são e quais são os tipos primitivos
  • O que é variável e referência?
  • Como criar uma classe?

2 Respostas to 'Orientação a Objetos simples assim!'

Subscribe to comments with RSS ou TrackBack to 'Orientação a Objetos simples assim!'.


  1. […] phpdevlpr wrote an interesting post today onHere’s a quick excerptPessoal trago esse tutorial fantástico sobre Orientação a Objetos do Fábio Santiago (http://www.devmedia.com.br/articles/viewcomp.asp?comp=3254&hl=), está muito interessante mesmo, e simples, ótima referência para estudo…. Antes de nos aventurarmos no universo dos Games ou da Web, precisamos conhecermos bem, alguns fundamentos básicos. A POO (Programação Orientada a Objetos) não é um paradigma ou conceito de desenvolvimento de software moderno. Há algumas décadas esses conceitos existem, e aos poucos foram conquistando adeptos na Engenharia de Software. Esses adeptos são engenheiros de sistemas, programadores e analistas, preocupados com reusabilidade, legibilidade e uma significativa elevação no nível de abstração dos seus softwares. […]

  2. junbert said,

    thanks!

    junbert@
    http://www.cypherbox.net


Deixe uma resposta

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


%d blogueiros gostam disto: