Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduo
Prof. Cristvo Cunha
Objetivos de aprendizagem
Conhecer a histria do paradigma de programao orientada a objetos.
Aprender o conceito de Classe e Objeto.
Implementar uma Classe e Criar objetos a partir dela.
Para incio de conversa
A orientao a objetos uma maneira (paradigma) de se pensar e desenvolver programas. Ao
desenvolver um programa orientado a objeto, voc deve pensar em como a situao que o programa
est automatizando funciona no mundo real, ou seja, quais os objetos envolvidos na situao e como
eles se relacionam.
A partir disso voc deve se preocupar em modelar e implementar o programa de maneira que ele
espelhe a situao existente no mundo real, ou seja, deve criar e manipular as representaes de
objetos existentes no mundo real.
Voc aprender um pouco da histria, dos objetivos da orientao a objetos e aprender dois
conceitos mais importantes da orientao a objetos: Classe e Objeto.
Paradigma de Programao Orientada a Objeto
Um pouco de histria
O conceito de programao orientada a objeto no algo novo. No final da dcada de 60, a linguagem
Simula67, desenvolvida na Noruega, introduzia conceitos hoje encontrados nas linguagens orientadas
a objetos. Em meados de 1970, o Centro de Pesquisa da Xerox (PARC) desenvolveu a linguagem
Smalltalk, a primeira totalmente orientada a objetos. No incio da dcada de 80, a AT&T lanou a
Linguagem C++, uma evoluo da linguagem de programao C em direo orientao a objetos.
Atualmente, um grande nmero de linguagens incorpora caractersticas de orientao a objeto, tais
como Java, Object Pascal, Python , etc.
Orientao a objeto Conceitos bsicos
O paradigma de programao orientada a objeto baseado em alguns conceitos que definem uma
forma de criar programas para computadores.
A filosofia principal desse paradigma de programao solucionar um problema (via programao)
atravs da representao computacional dos objetos existentes nesse problema (objetos do mundo
real), usando para isso os conceitos mencionados acima. Com isso, essa maneira de se desenvolver
programas fica mais prxima das situaes, dos problemas como eles acontecem no mundo real.
Ser um pouco difcil entender todas as vantagens de OO (Orientao a Objetos). Agora, portanto
vamos mencionar apenas duas:
mais fcil conversar com o cliente que pediu o software se falarmos com objetos que existem
no mundo dele (o mundo do software fica mais perto do mundo real).
O software feito com OO pode ser feito com maior qualidade e pode ser mais fcil de escrever
e, principalmente, alterar no futuro.
O nosso mundo est repleto de objetos, sejam eles concretos ou abstratos. Qualquer tipo de objeto
possui atributos (caractersticas) e comportamentos que so inerentes a esses objetos.
1) CANETA
Atributos de qualquer Caneta
- altura
- espessura
- cor
Nesse caso, o nosso objeto Caneta tem os seguintes dados em cada caracterstica:
- altura: 10 cm
- espessura: 2 cm
- cor: rosa
Comportamentos de qualquer Caneta
- desenhar
- etc.
2) PESSOA
Atributos de qualquer Pessoa
- altura
- peso
- idade
Nesse caso, o nosso objeto Pessoa tem os seguintes dados em cada caracterstica:
- altura: 1,80
- peso: 70
- idade: 25
Comportamentos de qualquer Pessoa
- andar
- sorrir
- ler
- etc.
Portanto, podemos perceber que o sistema de conta corrente (programa de conta corrente) ser
composto de vrios objetos, cada qual com um conjunto de atributos e comportamento em comum
(se forem do mesmo tipo) e com valores prprios nos seus atributos. A figura abaixo ilustra os vrios
objetos cliente, conta e agncia.
j: Cliente
a: Cliente
c1: Conta
c2: Conta
c: Agencia
O termo instncia frequentemente usado para descrever um objeto com valores prprios em seus
atributos. Por exemplo, observe a figura acima:
-
Exemplo
O valor dos atributos nome e endereo do objeto Joo podem mudar ao longo da existncia desse
objeto. As figuras abaixo ilustram isso: no estado 1 do objeto Joo, o valor do atributo endereo era
Rua J, no estado 2 o valor desse atributo Rua XX.
j: Cliente
j: Cliente
2) Comportamento
Determina como um objeto age e reage: suas modificaes de estado e interaes com outros objetos.
O comportamento determinado pelo conjunto de operaes ou mtodos que o objeto pode realizar.
Operaes ou mtodos so algo que voc pede para o objeto fazer, como fazer um depsito
(comportamento de qualquer objeto do tipo Conta).
Agora voc j sabe que qualquer programa orientado a objeto deve trabalhar com representaes de
objetos que reflitam as caractersticas e comportamento de objetos do mundo real e j aprendeu os
principais conceitos relacionados a objetos.
Falta agora aprender como CRIAR a representao de um objeto dentro de um programa.
No sistema de conta corrente foram identificados, a princpio, 3 tipos ou grupos de objetos: Cliente,
Agncia e Conta.
Faculdade de Tecnologia de Guaratinguet Prof. Joo Mod
www.fatecguaratingueta.edu.br - e-mail: fatecgt@fatecguaratingueta.edu.br
Av. Prof. Joo Rodrigues Alckmin, 1501 Jardim Esperana, Guaratinguet SP / CEP 12517-475
Tel. (12) 3126-3921 - 3125-7785 - 3126-4849
Sabemos que podero existir vrios objetos de cada um desses tipos e todos eles iro possuir o mesmo
conjunto de atributos e comportamentos do seu tipo.
Para criar uma representao de cada objeto dentro do programa, devemos antes criar uma estrutura,
uma espcie de molde ou template que represente os atributos e comportamentos do tipo do objeto.
Essa estrutura chamada de classe.
Portanto, devemos ter uma classe Cliente, uma classe Agncia e uma classe Conta.
a partir dessa estrutura conhecida como classe que iremos criar as representaes de objetos que
precisamos para desenvolver o programa, ou seja, precisamos criar a estrutura (classe) apenas uma
vez e, a partir dela, sero criadas as representaes dos objetos.
Ateno!
Os conceitos de classe e objeto so os mais bsicos e importantes da orientao a objetos. O correto
entendimento desses conceitos imprescindvel para o entendimento dos demais conceitos da OO.
Vamos aprender mais conceitos sobre Classes e Objetos?
Uma classe a descrio de atributos e comportamentos de um grupo de objetos com propriedades
similares (atributos) e comportamento comum (operaes ou mtodos).
Por representar atributos e comportamento de um determinado tipo de objeto que existe no mundo
real, uma classe uma abstrao da realidade, pois nela esto especificados somente parte dos
atributos e comportamentos de um objeto do mundo real. Somente parte, porque no so todos os
atributos e comportamentos dos objetos do mundo real que interessam ao sistema.
A figura a seguir, ilustra a representao grfica das classes do sistema de conta corrente. Na primeira
parte da figura est o nome da classe, na parte do meio, esto os atributos e, na parte final, est o
comportamento (mtodos ou operaes). Observe que a classe Conta e Agencia ainda no esto com
os comportamentos definidos. Faremos isso na medida em que avanarmos nos conceitos de OO.
transacao: String
insereNome()
insereEndereco()
insereCpf()
retornaNome()
retornaEndereco()
retornaCpf()
Um objeto uma instncia de uma classe. Essa instncia possui valores prprios em cada atributo
definido na classe. As figuras a seguir ilustram a classe Cliente e os vrios objetos (instncias) da classe
Cliente.
j: Cliente
a: Cliente
insereNome()
insereEndereco()
insereCpf()
retornaNome()
retornaEndereco()
retornaCpf()
A notao que estamos utilizando para representar classes e objetos a utilizada pela UML (Unified
Modelling Language) ou Linguagem de Modelagem Unificada. A UML no uma linguagem de
programao e sim, uma linguagem composta de vrios diagramas (cada qual com seu conjunto de
smbolos grficos) que expressam como um sistema orientado a objetos deve funcionar. Ela utilizada
nas fases iniciais do desenvolvimento de um software, ou seja, antes da programao propriamente
dita, com o objetivo de especificar e documentar o funcionamento do sistema. O diagrama que iremos
utilizar o Diagrama de Classes que especifica as classes do sistema e o relacionamento entre elas.
Faculdade de Tecnologia de Guaratinguet Prof. Joo Mod
www.fatecguaratingueta.edu.br - e-mail: fatecgt@fatecguaratingueta.edu.br
Av. Prof. Joo Rodrigues Alckmin, 1501 Jardim Esperana, Guaratinguet SP / CEP 12517-475
Tel. (12) 3126-3921 - 3125-7785 - 3126-4849
Agora que voc j estudou a diferena entre CLASSE e OBJETO, vamos partir para a parte prtica, ou
seja, voc vai aprender a implementar (programar) uma classe e a criar objetos a partir dela. Voc
continuar aprendendo outros conceitos nas prximas aulas, porm, para que os conceitos no fiquem
muito abstratos para voc, vamos ver como isso funciona na prtica de maneira paralela.
Importante!
O entendimento dos conceitos de orientao a objetos que j vimos e, dos demais que esto por vir,
so de vital importncia para o desenvolvimento de programas orientado a objetos e sua utilizao
independe da linguagem utilizada para implementao dos programas. Quer dizer que, para
desenvolver qualquer programa OO, preciso aplicar esses conceitos na implementao do programa,
utilizando para isso, qualquer linguagem de programao orientada a objetos.
Linha 1: definio inicial da classe. Comea com a palavra public (veremos mais adiante qual o
significado dessa palavra) seguida da palavra class e seguida do nome da classe.
Linhas 2 e 3: definio dos atributos definidos para a classe. Na definio dos atributos deve-se utilizar
a palavra private (veremos mais adiante o significado dessa palavra) seguido do tipo de dado de cada
atributo e do nome do atributo. No caso da classe Cliente, os dois atributos nome e endereo devem
armazenar dados do tipo String (literal) e o atributo cpf deve armazenar valores do tipo int (numricos
inteiros).
Linha 5: depois da definio do nome da classe e dos atributos da classe, segue-se a definio dos
comportamentos, no contexto da implementao, conhecidos como mtodos. Por enquanto, os
comportamentos ou mtodos definidos para a classe Cliente so simples. Na medida em que formos
avanando, mais comportamentos ou mtodos podero ser implementados. No momento,
implementamos quatro mtodos: Cliente( ), insereNome( ), insereEndereco( ), retornaNome( ),
retornaEndereco( );
O primeiro mtodo implementado se chama Cliente( ) e se enquadra na categoria dos mtodos
construtores. Um mtodo construtor SEMPRE deve ter o mesmo nome da classe e no deve
Faculdade de Tecnologia de Guaratinguet Prof. Joo Mod
www.fatecguaratingueta.edu.br - e-mail: fatecgt@fatecguaratingueta.edu.br
Av. Prof. Joo Rodrigues Alckmin, 1501 Jardim Esperana, Guaratinguet SP / CEP 12517-475
Tel. (12) 3126-3921 - 3125-7785 - 3126-4849
especificar no cabealho nenhum tipo de retorno, nem mesmo deve ser utilizada a palavra void (o que
acontece nos demais mtodos que no retornam nada mtodos do tipo procedimento). Todo o
mtodo construtor s executado no momento em que um objeto dessa classe criado (instanciado).
Vamos saber mais sobre mtodos construtores no momento da explicao da criao de objetos. Saiba
por enquanto que importante (no obrigatrio) que cada classe tenha ao menos um mtodo
construtor implementado.
Linhas 6 a 8: linhas de cdigo do mtodo construtor. O que se pode programar dentro de um mtodo
construtor?
Qualquer coisa que se quer que acontea quando um objeto do tipo Cliente, no caso, for criado,
porque o cdigo que est dentro de um mtodo construtor executado sempre que um objeto desse
tipo for criado.
Porm, normalmente se programa para que os atributos do objeto sejam inicializados. No caso do
nosso mtodo construtor, os atributos nome, endereo foram inicializados com Strings vazias () e o
atributo cpf com o valor 0.
Linha 10: nessa linha est o comportamento ou mtodo chamado insereNome( ). Esse tipo de
comportamento tpico de qualquer objeto do tipo Cliente, pois todo o cliente pode ter seu nome
alterado (ou inserido). No caso de um sistema OO, quem executa esse comportamento o prprio
objeto Cliente.
A implementao desse mtodo ou comportamento feita atravs de um procedimento (veja que o
tipo de retorno void, ou seja, essa subrotina no retorna nenhum valor) que recebe como parmetro
o novo nome do cliente. Esse valor recebido em uma varivel de memria do tipo String que
chamamos de sNome. O nome da varivel de memria que receber o novo valor do atributo nome
pode ser qualquer um, porm essa varivel deve ser declarada como sendo do tipo String, j que o
valor dela ser atribudo ao atributo nome que tambm do tipo String (prxima linha).
Linha 11: atribuio do novo nome do cliente ao atributo nome. O atributo nome recebe o contedo
da varivel sNome, que contm o novo nome do cliente.
Linha 12: fim do mtodo insereNome( );
Linhas 14 a 16: implementao do mtodo ou comportamento insereEndereco(). Esse mtodo altera
(ou insere) o endereo de qualquer objeto Cliente.
Linhas 18 a 20: implementao do mtodo ou comportamento insereCpf(). Esse mtodo altera (ou
insere) o cpf de qualquer objeto Cliente.
Linha 21: nessa linha est o comportamento ou mtodo chamado retornaNome( ). Esse tipo de
comportamento tpico de qualquer objeto do tipo Cliente, pois todo o cliente pode ser capaz de
fornecer (retornar) seu nome. No caso de um sistema OO, quem executa esse comportamento o
prprio objeto Cliente.
Faculdade de Tecnologia de Guaratinguet Prof. Joo Mod
www.fatecguaratingueta.edu.br - e-mail: fatecgt@fatecguaratingueta.edu.br
Av. Prof. Joo Rodrigues Alckmin, 1501 Jardim Esperana, Guaratinguet SP / CEP 12517-475
Tel. (12) 3126-3921 - 3125-7785 - 3126-4849
A implementao desse mtodo ou comportamento feita atravs de uma funo (veja que o tipo de
retorno String) que retorna o nome do cliente, ou seja, o valor armazenado no atributo nome do
objeto Cliente.
Linha 22: retorno (usar palavra return) do contedo do atributo nome.
Linhas 25 a 27: implementao do mtodo ou comportamento chamado retornaEndereco() .
Linhas 29 a 31: implementao do mtodo ou comportamento chamado retornaCpf( ).
Linha 32: final da implementao da classe.
Depois de implementar a classe, voc deve compilar, mas no deve executar. Esse tipo de classe no
executvel, ela no possui mtodo main ( ). Essa classe s possui a finalidade de ser uma estrutura ou
template (modelo ou receita de bolo) para a criao de objetos desse tipo.
Criar objetos a partir da classe Cliente
Depois que a classe Cliente for implementada e compilada, ela est pronta para ser usada, ou seja,
possvel criar objetos do tipo Cliente a partir dela.
Abaixo est a implementao de uma classe que possui um mtodo main( ), ou seja, uma classe
executvel. Dentro desse mtodo estamos criando um objeto do tipo Cliente e manipulando esse
objeto.
Mas o que de fato criar um objeto? Lembre-se sempre: agora estamos falando de objetos no
contexto de um software. Voc entender isso nas linhas seguintes.
Linha
Linha
Linha
Linha
Linha
Linha
Linha
Linha
Linha
Relembrando: para desenvolver qualquer programa voc deve editar o programa num editor de texto,
salv-lo num local conhecido e logo aps compil-lo. O mesmo processo deve ser feito com as classes
que voc desenvolver daqui para frente. Detalhe: classes que representam atributos e comportamento
de objetos NO SO executadas.
Linha 1: definio inicial da classe. Comea com a palavra public seguida da palavra class e seguida do
nome da classe.
Linha 2: definio do mtodo main( ). Essa definio sempre a mesma utilizada nos programas
anteriores. Todo o programa que iremos implementar estar dentro do mtodo main( ).
Linha 3: essa linha cria um objeto do tipo Cliente, chamado a.
Criar um objeto alocar (reservar) um espao na memria do computador para armazenar valores
para os atributos definidos na classe desse objeto.
A explicao de criar um objeto similar criao (declarao) de uma varivel de memria. Quando
declaramos uma varivel de memria tambm estamos reservando espao na memria para
armazenar algum valor. Essa varivel de memria deve ter um nome e deve ter um tipo de dados e
nela s poder ser armazenado valores desse tipo.
O mesmo acontece com a criao de um objeto. Ao criar um objeto, precisamos dar um nome
(identificao) para ele e, nesse espao de memria que estamos declarando, s podero ser
armazenados valores correspondentes aos atributos definidos no tipo (classe) desse objeto.
Essa explicao para criao de objeto simples e ser utilizada no momento para facilitar seu
entendimento. Posteriormente, essa explicao ser refinada.
Portanto, sempre que se quer criar um objeto deve-se usar a seguinte sintaxe:
Aps a execuo dessa linha, um objeto, ou seja, uma rea de memria alocada.
Na instruo da linha 3, estamos criando um objeto chamado a. Note cuja a sintaxe igual a definida
acima para criao de objetos. Sempre que um objeto criado, o mtodo construtor definido na classe
desse objeto chamado (invocado) e, tudo o que est programado nesse mtodo, executado.
O que foi programado no mtodo construtor da classe Cliente?
A inicializao de todos os atributos do objeto Cliente, portanto ao criar o objeto cliente, todos os seus
atributos j estaro inicializados.
A figura abaixo ilustra de maneira simples o objeto alocado na memria e seus atributos inicializados.
A partir desse momento, poder ser chamado qualquer comportamento ou mtodo definido na classe
cliente. Isso ser feito nas linhas seguintes.
Linha 4: depois que o objeto criado, podemos invocar seus comportamentos ou mtodos. Nessa
linha estamos chamando o mtodo insereNome(Ana) e passando como parmetro o novo nome do
cliente.
Observe que o mtodo est precedido do nome do objeto e SEMPRE deve ser assim. Qualquer
comportamento ou mtodo deve ser chamado precedido do nome do objeto.
Quando se chama qualquer mtodo definido em uma classe, o cdigo implementando nesse mtodo
executado. Nesse caso, o mtodo ir alterar o nome do objeto a.
Qual o valor do atributo nome do objeto a ANTES da chamada desse mtodo?
(String vazia) porque quando o objeto foi criado, esse valor foi armazenado l. Isso aconteceu no
momento que o mtodo construtor foi chamado.
Qual o valor do atributo nome do objeto a DEPOIS da chamada desse mtodo?
Ana porque foi esse o valor passado para o mtodo. Lembre-se que o mtodo insereNome(String
sNome) recebe um valor como parmetro e, esse valor, armazenado no atributo nome.
Logo, aps a execuo dessa linha o objeto est com o seguinte estado:
Linha 5: chamada do mtodo insereEndereco( ) que ir inserir (alterar) o endereo do objeto a. Logo
aps a execuo dessa linha, o objeto est com o seguinte estado:
Linha 7: impresso do nome do cliente. Para isso chamamos o mtodo retornaNome( ) do objeto a.
Como esse mtodo uma funo e toda a funo retorna valor, ele no pode ser chamado isolado
numa linha de instruo. Deve ser feito alguma coisa com o valor retornado do mtodo, ou imprimir
ou armazenar em outra varivel de memria.
Linha 8: fim do mtodo main().
Linha 9: fim da classe UsaCliente.
Observao: Essa classe utiliza apenas 1 objeto, mas normalmente trabalharemos com programas que
envolvem a criao de vrios objetos. O procedimento explicado para criao e utilizao de 1 objeto
o mesmo para vrios objetos.
Boa Diverso!
timos Estudos!