DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Orientação a Objetos - simples assim!

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.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Orientação a Objetos simples assim!

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:\projetos\hello

    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:\projetos\hello 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:\projetos\hello.
  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?

Bom ,pessoal, já me alonguei demais... E tomei muito vossa paciência.

Não percam..., ainda dentro do artigo de OO, abordaremos tópicos bastante importantes, tais como:

  • O tipo String;

  • E os atributos e métodos?
  • Projeto piloto
  • Herança
  • Override
  • Overload
  • Classe concreta e abstrata
  • Interface
  • Polimorfismo


Até próxima semana!!!


Fabio Santiago
Fabio Santiago tem 28 anos, formado em Análise de Sistemas pela UNIFOR. É certificado SUN (SCJP). Atualmente é Consultor Web independente, e Engenheiro de Software do Instituto Atlântico pela IVIA. Foi Engenheiro de Sistemas do C.E.S.A.R (Centro de Estudos e Sistemas Avançados do Recife) para p...
O que você achou deste post?

    28 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



André Luiz Souza
Muito bom. Estou curioso para ver o artigo de AndroMDA, já que a documentação ainda é muito escassa.
[há +1 ano] - Responder

 

Cristiane Pinto
Parabéns pelo artigo, está bastante objetivo. Só podia ser profissional da Easycom mesmo!!
[há +1 ano] - Responder

 

Paulo
Muito didático e voltado para as necessidades de pessoas (como eu) que estão começando agora no novo mundo de OO. Estou aguardando a continuação, ok?! Parabéns Fabio.
[há +1 ano] - Responder

 

Fabio
Que bom que gostou!
[há +1 ano] - Responder
 

Rodrigo Holanda
Seu artigo foi muito esclerecedor para mim, depios dele encaro com outros olhos a questão de orientação a objeto. Parabéns. Gostaria de saber mais um pouco sobre esa empresa que voc~e está agora a Easycom, pois já ouvi falar muito bem dela, de seu profissionalismo e da qualidade de seus servoços. Grato.
[há +1 ano] - Responder

 

Fabio
Trata-se uma empresa de desenvolvimento de sites e sistemas web: www.easycom.com.br
[há +1 ano] - Responder
 

Cleber Cintra
Comecei a estudar OO recentemente e gostei do artigo, mandou bem, valeu!
[há +1 ano] - Responder

 

Lucas
Ae Fábio, parabéns pelo seu artigo. Simples e objetivo, abrirá a mente de muita gente, com toda certeza. Estou aguardando o próximo artigo. Abraço!
[há +1 ano] - Responder

 

André Luiz
Grande Fábio. Muito bacana seu artigo. Para quem está começando no mundo do OO ajuda a dar uma desmistificada na coisa. Parabéns Sucesso!
[há +1 ano] - Responder

 

Thales Victor
Fábio, Entre Netbeans e Eclipse, qual seria a melhor IDE para desenvolvimento de aplicações Desktop?
[há +1 ano] - Responder

 

Fabio
Thales, gosto mais do Eclipse por diversos motivos. Existe um plugin chamado VE que é fantastico.
[há +1 ano] - Responder
 

Marcelo Vieira
Que simplicidade em. Ta de parabens mesmo. Muito bom. Simples e objetivo. Sem enrolação. To esperando o proximo artigo seu...
[há +1 ano] - Responder

 

Fabio
Fantastico!
[há +1 ano] - Responder
 

Thales B. Dias
Parabéns, poucos artigos são tão claros como o seu. Sugiro um artigo sobre Certificação Java, acredito que será útil para muitos leitores.
[há +1 ano] - Responder

 

Fábio Luis Gomes
Parabens pela simplicidade que voce usa para explicar o que muitos autores tentam nao conseguem. Estou esperando seu proximo artigo.
[há +1 ano] - Responder

 

Nubia
sfjsfjsk
[há +1 ano] - Responder
 

Klebert
Gostei bastante da forma que o assunto, tão confuso para quem está iniciando, foi abordado. Mas ainda espero o proximo artigo que ja deveria ter saído(em uma semana). Parabens
[há +1 ano] - Responder

 

Ralx
Foi muito boa a forma que vc passou as primeiras informações sobre OO em Java ...Valeu !
[há +1 ano] - Responder

 

Marcelo Madeira
Pow cara, gostei do artigo e to esperando a continuação. Tem previsão?
[há +1 ano] - Responder

 

Márcio Correia
Linguagem fácil e bem ilustrado. Parabéns Fabio
[há +1 ano] - Responder

 

Viviane Sousa
Seu artigo foi recomendado por uma colega de curso para esclarecer dúvidas de aula. Realmente foi muito esclarecedor. Parabenizo pelo conteúdo e pelas ilustrações que facilitam o entendimento do leitor. Estou esperando a continuação e seus próximos artigos.
[há +1 ano] - Responder

 

Edla
Parabéns, pelo artigo. Ele está com uma excelente didática, é assim que se começa os estudos.
[há +1 ano] - Responder

 

Rafael Silva Negreiros
essa palavra descreve bem o conteudo desse artigo , Alem de ter sanado minhas duvidas sobre POO..... obrigado
[há +1 ano] - Responder

 

Csc Brasil Sistemas Ltda.
Excelente material, principalmente para quem está iniciando em OO.
[há +1 ano] - Responder

 

Marcos Vinicius Albuquerque
O ARTIGO FICOU OTIMO. SERIA POSSIVEL MONTAR UM FLUXO DESENHANDO IGUAL AOS SAMURAIS, POREM COM A APLICAÇÃO COMPLETA DESENHADA, PARA CLAREAR MAIS AINDA?
[há +1 ano] - Responder

 

Bruna
Muito obrigada Fabio, pelo interesse em passar seus conhecimentos ao próximo! Nem imaginas o quanto me ajudou, sem contar que sua didática é sensacional! Parabéns! Isso é realmente um dom.
[há +1 ano] - Responder

 

Oliveira Souza
Muito bom..Me orgulho de ter ele como amigo de trabalho.Cara Simples e Humilde.
[há +1 ano] - Responder

 

Laercio Mesquita
Parabéns...muito elucidativo o conteúdo!
[há +1 mês] - Responder

 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03