Buscar

TEMA 4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

tema 4
Linguagens 
Orientadas 
a Objetos
Prezado aluno, dando continuidade ao mergulho 
nos principais paradigmas de programação, esse 
tema irá aprofundar seu conhecimento no paradig-
ma Orientado a Objetos. 
Ao concluirmos este tema você terá:
 Compreendido sobre a importância do para-
digma Orientado a Objetos;
 Conhecimento das principais estruturas e 
conceitos da Orientação a Objetos;
 Noção de programação com exemplo em lin-
guagens utilizadas na indústria, como o JAVA;
 Clareza e visão ampliada sobre montagem de 
algoritmos, no paradigma em questão. 
4.1
CONCEITOS BÁSICOS DA ORIENTAÇÃO A OBJETOS
A Orientação a Objetos é um paradigma que surgiu para aproxi-
mar a programação dos conceitos existentes no mundo real.
Vamos imaginar que estamos em uma sala de aula. Podemos 
dizer que estamos inseridos no domínio sala de aula. Nessa sala pos-
suem entidades, informações e processos que se relacionam. Como 
exemplo, é possível imaginar um professor como uma entidade que 
ensina para outra entidade aluno, ambos possuem informações ine-
rentes a cada um e processos distintos para a comunicação. 
Na Orientação a Objetos o domínio é modelado computacional-
mente e as entidades são representadas como objetos. 
Um objeto do mundo 
computacional possui atri-
butos e métodos. Atributos 
são os valores que esse ob-
jeto pode assumir e méto-
dos são as formas que esses 
valores podem ser modifi-
cados. Calma, prezado alu-
no, observe o exemplo da 
Figura 81. 
Fonte: Autoria própria
Figura 81. Objetos em sala de aula 
Sala de aula
150 Linguagem deProgramação
À esquerda temos 3 alunos e um professor representando uma 
sala de aula. À direita a representação desse domínio em um mundo 
computacional orientado a objetos. Vamos pontuar alguns aspectos:
1. Temos 3 alunos na sala de aula, eles serão transportados 
para 3 objetos “ALUNO”;
2. As informações (atributos) que poderíamos adquirir do ob-
jeto “ALUNO” são inúmeras, entretanto, temos que mapear 
o que realmente é importante para o problema que quere-
mos resolver, então, no exemplo precisamos apenas da: ma-
trícula, nome e da nota;
3. Caso sua solução necessite de um outro atributo, como en-
dereço, telefone, idade, sexo, etc., esses poderiam ser tam-
bém adicionados, mas o programador deve pensar se isso 
é realmente necessário para sua solução. Esse conceito é 
conhecido como abstração;
4. Na ilustração, na parte mais inferior do objeto, temos os mé-
todos. Eles são responsáveis por modificar o comportamento 
do objeto, ou seja, seu atributo. Imagine que o objeto “ALUNO” 
com atributos de João esteja com o nome errado, para modifi-
cá-lo, o método “corrigirNome()” pode ser invocado. Em uma 
analogia ao paradigma procedural, o método seria equivalente 
a uma função. Da mesma forma, para adicionar uma nota a um 
objeto, bastaria invocar o “adicionarNota()”;
5. É importante observar que são objetos do mesmo tipo 
(“ALUNO”), com a mesma estrutura, entretanto os valores 
atribuídos são diferentes;
6. Da mesma forma temos um objeto “PROFESSOR” que tem uma 
estrutura comum para todos os professores que eu for mape-
Tema 4
 Linguagens Orientadas a Objetos 151
ar em meu domínio computacional que chamamos de Sala de 
Aula. A estrutura que definimos para o objeto professor é com-
posta pelos atributos: matrícula, nome, disciplina e salario; e, os 
métodos: adicionarDisciplina() e adicionarSalario();
Ficou difícil entender alunos e professores como objetos? Va-
mos ver outro exemplo com um objeto do mundo real se tornando um 
objeto do mundo computacional! Vejam a Figura 82.
Figura 82. Objetos Abajur
Fonte: Autoria própria
Na ilustração acima, temos um objeto do mundo real conhecido 
como abajur. Observe que em um primeiro momento foi criado um 
abajur de marca YXZ, cor branca, preço R$120,00 e o atributo ligado 
com o valor NÃO. Imagine que em um segundo momento o progra-
mador precisou liga-lo e, para tal feito, invocou o método “ligar()” que, 
como pode ser visto na ilustração, aciona a luz do abajur e altera o 
atributo Ligado para SIM. 
Acredito que com os exemplos acima tenha ficado claro o que 
são objetos, atributos e métodos. Antes de visualizar qualquer trecho 
152 Linguagem deProgramação
de código, vamos aprender outro conceito essencial para a orientação 
a objetos, o de classe!
Para entender o conceito de classe, vamos para mais uma rápida ana-
logia! Imagine que você é um engenheiro e te contrataram para construir 
um condomínio com 10 casas de estrutura exatamente igual. Se essas casas 
fossem um objeto computacional poderiam ser representadas apenas como 
“CASA” por possuírem a mesma estrutura física, mas em seus atributos, po-
deríamos ter algumas distinções. Uma casa, por exemplo, apesar de ser es-
truturalmente igual, pode ter uma cor diferente, cada uma das 10 casas seria 
de uma cor. No objeto, isso seria facilmente representado por um atributo 
“cor”. Essa estrutura padrão da casa, para o engenheiro é chamada de planta 
da casa, para nós é chamada de CLASSE. Na planta da casa o engenheiro irá 
definir toda a estrutura da casa e nós, toda a estrutura de um determinado 
tipo de objetos. Vamos à ilustração na Figura 83 .
Figura 83. Classes e Objetos
Fonte: Autoria própria 
Tema 4
 Linguagens Orientadas a Objetos 153
Na ilustração anterior, com uma única planta foram criadas 3 
casas de estrutura idêntica, mas com cores diferentes. A classe fun-
ciona de maneira similar. Vamos criar uma classe de nome “CASA”, 
com 3 atributos sem nenhuma definição (lembre-se que aqui é só a 
estrutura, nada de valor!): “Número”, para identificação da casa em um 
condomínio, por exemplo; “Cor”, para definição da cor; e “Aberta” para 
identificar se a casa está aberta ou fechada. Para manipular os atribu-
tos foram criados três métodos: abrirCasa() e fecharCasa(), alteram 
entre abrir a casa e fechar a casa, respectivamente; e DefinirCor(), 
para alterar a cor da casa.
Com a classe “CASA” criada é possível criar quantos objetos ca-
sas forem necessários. Caso nosso condomínio tenha 3 casas, basta 
instanciar (criar o objeto), 3 objetos “CASA”, cada um com seu próprio 
estado que é definido pelo atributo. 
Com a definição em mente, trabalharemos com a linguagem de 
programação JAVA para codificar nossos exemplos por ser uma lin-
guagem tipicamente orientada a objetos. Veja o exemplo da criação da 
classe “Casa” para representar nossa ilustração na Figura 84.
Figura 84. Classe “Casa” em JAVA
public class Casa {
//Atributos da Classe
private int Numero;
private String Cor;
private String Aberta;
//Métodos da Classe
public void abrirCasa(){
this.Aberta=”SIM”;
}
154 Linguagem deProgramação
public void FecharCasa(){
this.Aberta=”NÃO”;
}
public void Defi nirCor(String textoCor){
this.Cor=textoCor;
}
}
Fonte: Autoria própria
Criamos a classe “Casa” com os três atributos e os três métodos 
descritos anteriormente. Vamos ver alguns pontos importantes:
1. As palavras reservadas public e private informam como as 
classes, atributos ou métodos podem ser acessados; se um 
atributo é privado (private), ele só poderá ser modificado de 
alguma forma se for internamente pela própria classe; já o 
público (public) permite que o objeto seja criado (instancia-
do) em outra classe;
2. Ainda falando dos critérios de visibilidade, é uma boa práti-
ca de programação orientada a objetos, manter os atributos 
da classe privados para que somente possam ser acessados 
pelos métodos, porém esses, devem ser públicos;
3. “this” é uma palavra reservada que permite o acesso à vari-
ável da própria classe. Quando utilizamos “this.Cor = texto-
Cor”, por exemplo, queremos dizer que a cor passada para 
o método por parâmetro (“textoCor”) deverá ser atribuída à 
Cor do objeto;
Tema 4
 Linguagens Orientadas a Objetos 155
4. Outra palavra reservada, que também é utilizada na progra-
mação procedural, é a “void” que é uma função (na orientação 
a objetos, método) que não tem retorno, apenas executará o 
blocode código e sairá dele;
5. Quando o objeto for criado com a classe acima, ele terá Nú-
mero, Cor e “Aberta” como atributos, sendo que poderá alte-
rar as informações de Cor e “Aberta” através dos atributos. 
Iremos testar a classe Casa em JAVA, observe a Figura 85:
Figura 85. Instanciando um objeto da classe casa
public class TestaMetodosCasa {
public static void main ( String [] args ) {
Casa casa1 = new Casa ();
casa1.Defi nirCor(“Azul”);
casa1.abrirCasa()
}
}
Fonte: Autoria própria 
No exemplo, é criada uma nova classe de nome “TestaMetodos-
Casa”. O nome é bastante sugestivo! Vamos criar um objeto do tipo 
“Casa” e trabalhar com os métodos existentes em sua implementação. 
Acompanhe o raciocínio:
1. Não entraremos nas minúcias, mas existe um método princi-
pal em JAVA (“main”), onde a execução do programa é iniciada, 
ele é definido em “public static void main ( String [] args )”;
156 Linguagem deProgramação
2. Vamos criar um objeto de referência “casa1” do tipo “Casa”. 
Todos os métodos e atributos existentes na classe “Casa” 
poderão ser utilizados por esse objeto. Para instanciá-lo uti-
liza-se a palavra reservada “new” seguido do objeto “Casa()”. 
O “Casa” que precede o “casa1” informa que a referência cria-
da será do tipo “Casa”;
3. Para modificar o estado do objeto “casa1”, foram utilizadas 
duas chamadas aos métodos; no primeiro, chama-se o “De-
finirCor()” passando como parâmetro a cor “Azul” que será 
atribuída ao objeto; Da mesma forma, foi invocado o método 
“abrirCasa()” para trocar o estado do atributo aberta para “SIM”.
4. Ficaram claros os conceitos básicos de orientação a objetos 
e como são utilizados? Ainda iremos aprofundar nosso co-
nhecimento nesse paradigma no decorrer deste tema. Este 
conteúdo serviu para fixarmos os conceitos básicos através 
de ilustrações e exemplos na linguagem JAVA.
 
LEITURA COMPLEMENTAR 
 CAELUM. Orientação a objetos básica. Disponível em: < https://
www.caelum.com.br/apostila-java-orientacao-objetos/orienta-
cao-a-objetos-basica/>. Acesso em: 13 jun. 2016.
A CAELUM é uma empresa que traz uma série de cursos bem elaborados 
voltados para o mercado, por apresentarem uma abordagem prática. No 
link acima é possível fortalecer os conceitos trabalhados neste conteúdo, 
com diversos exemplos na linguagem de programação JAVA. Ao final da 
leitura, conforme descrito pelos autores, você será capaz de dizer o que é 
e para que serve orientação a objetos; conceituar classes, atributos e com-
portamentos; entender o significado de variáveis e objetos na memória.
Tema 4
 Linguagens Orientadas a Objetos 157
 DEVMEDIA. Introdução à Programação Orientada a Objetos em 
Java. Disponível em: < http://www.devmedia.com.br/introducao-
-a-programacao-orientada-a-objetos-em-java/26452>. Acesso 
em: 13 jun. 2016.
O artigo escrito traz, de maneira descomplicada, conceitos iniciais da 
programação orientada a objetos em JAVA. O autor apresenta exem-
plos simples e analogias que possibilitam uma maior compreensão do 
assunto. 
PARA REFLETIR 
Você conheceu alguns conceitos básicos da linguagem orientada a 
objetos. Com o conhecimento adquirido sobre programação proce-
dural, no tema anterior, o que consegue visualizar como principal di-
ferença entre os paradigmas? Você consegue visualizar a vantagem 
de se utilizar o conceito de objetos na programação? Reflita sobre os 
questionamentos e sobre os novos conceitos aprendidos. 
158 Linguagem deProgramação
4.2 
QUATRO PILARES DA ORIENTAÇÃO A OBJETOS: ABSTRAÇÃO, 
ENCAPSULAMENTO, HERANÇA E POLIMORFISMO 
Neste conteúdo iremos conhecer o que Machado (2016) preconiza 
ser os quatro pilares da Orientação a Objetos: Abstração, Encapsulamen-
to, Herança e Polimorfismo. Começaremos falando da abstração.
ABSTRAÇÃO
A abstração é um dos conceitos mais importantes quando trata-
mos do paradigma em questão. Abstrair é o poder de escolher corre-
tamente os aspectos do mundo real que devem ser representados no 
mundo computacional. Devemos saber a exata necessidade do nosso 
sistema para criarmos os atributos e métodos necessários.
Já demos exemplo de um objeto casa neste livro. Imagine o nú-
mero de atributos que poderíamos listar de uma casa! Pense alguns 
comigo: Altura, Largura, Comprimento, Número, Quantidade de Jane-
las, Cor do telhado, Cor das Paredes etc. Mas, quais desses atributos 
realmente fazem sentido para o meu software? 
A ideia de abstrair é ocultar certos detalhes que não são ne-
cessários, então, digamos que só precisemos saber a cor da casa e 
o número da mesma, não há sentido algum, portanto, mapear altura, 
largura, comprimento, etc.
Tema 4
 Linguagens Orientadas a Objetos 159
Três pontos são importantes para a abstração:
1. Identidade: é necessário se definir uma identidade para o 
objeto. Essa identidade deve ser única no sistema para que 
não haja conflito nem entendimento dúbio sobre o que é 
esse objeto;
2. Propriedades: As propriedades definem o objeto. Podem 
ser entendidas como os atributos do objeto;
3. Métodos: Por fim, deve-se imaginar que ações desse objeto 
podem fazer dentro desse mundo computacional. 
Vamos conhecer agora outro conceito da Orientação a Objetos, 
o encapsulamento. 
ENCAPSULAMENTO
O encapsulamento é uma técnica que visa esconder detalhes 
de implementação do usuário. Em uma analogia com o mundo real, 
podemos pensar em alguém dirigindo um carro. Quando se dirige um 
carro, o motorista não tem preocupação em como o motor está fun-
cionando, mas apenas utiliza o acelerador e o freio para mantê-lo em 
movimento e pará-lo. O acelerador e o freio são a interface entre o 
motorista e o motor e todas as funcionalidades mecânicas do motor 
do carro estão encapsuladas. 
Nas linguagens orientadas a objetos, como JAVA, o encapsula-
mento é realizado utilizando alguns modificadores de acesso, tal as-
sunto será abordado um pouco mais a frente com maiores detalhes. 
160 Linguagem deProgramação
HERANÇA
A Herança é um ponto essencial do paradigma Orientado a Ob-
jetos. Para entender, vamos retomar o exemplo da sala de aula que 
fora iniciado no Tópico 1. Numa sala existem alunos e professores. 
Concorda comigo que essas duas entidades são pessoas? Que tan-
to aluno como professores têm em comum, no mínimo, um atributo 
“Nome”, por exemplo? Na ilustração da Figura 86 poderemos ver isso 
de forma mais clara.
Figura 86. Representação classe Pessoa
Fonte: Autoria própria 
A classe “PESSOA” possui os atributos “nome”, “idade” e “ende-
reço”, além dos métodos “alteraNome()”, “alteraIdade()” e “alteraEnde-
reco()”. Vamos aos pontos importantes:
Tema 4
 Linguagens Orientadas a Objetos 161
1. As classes abaixo da classe “PESSOA” herdam todos os atributos 
e métodos dela, ou seja, é como se a classe “ALUNO” fosse com-
posta por todos os atributos e métodos de “PESSOA” acrescido 
dos seus, assim como ocorre com a classe “PROFESSOR”;
2. A classe superior (“PESSOA”) é chamada de superclasse e as 
mais inferiores são subclasses (“ALUNO” e “PROFESSOR”);
3. A superclasse é a mais genérica e as subclasses são espe-
cializações dela.
A Figura 87 apresenta a implementação dessas classes utili-
zando o conceito de herança ilustrado anteriormente.
Figura 87. Herança em JAVA
class Pessoa {
//Atributos da Classe
private String Nome;
private int Idade;
private String Endereco;
//Métodos
public alteraNome(){}
public alteraIdade(){}
public alteraEndereco(){}
}
class Aluno extends Pessoa {
//Atributos da Classe
private int matricula;
private double Nota;
//Métodos
public adicionarNota(){}
}
162 Linguagem deProgramação
class Professor extends Pessoa {
//Atributos da Classe
private int matricula;
private String disciplina;
private double Salario;
//Métodos
public adicionarDisciplina (){}
public adicionarSalario (){}
}
Fonte: Autoria própria 
Foram criadas três classes apenas com a declaração dos atri-
butos e sem implementar os métodos, para que fique mais visível a 
questão da herança. Para que as classes “ALUNO” e “PROFESSOR”herdem os atributos e métodos da classe “PESSOA” é utilizada na de-
claração das subclasses a palavra reservada “extends”. Vejamos como 
são instanciados os objetos de uma classe estendida na Figura 88. 
Figura 88. Instanciando objetos com herança em JAVA
public class TestaHeranca {
public static void main ( String [] args ) {
Professor testeProf = new Professor();
Aluno testeAluno = new Aluno();
testeProf.alteraNome();
testeAluno.alteraNome();
}
}
Fonte: Autoria própria 
Tema 4
 Linguagens Orientadas a Objetos 163
Alguns pontos para se observar:
1. Foi possível instanciar um objeto “PROFESSOR” e chamar 
diretamente um método da superclasse “PESSOA”;
2. Foi possível instanciar também um objeto “ALUNO” e utili-
zar um método da superclasse “PESSOA”. 
E se tivermos um método do mesmo nome na subclasse? Nes-
se caso, temos um conceito chamado de sobreposição de métodos. 
Caso o mesmo método da classe pai (ou superclasse) seja reescrito 
na sua classe filha (subclasse), quando o método for invocado, o mais 
especializado é chamado, ou seja, o da subclasse. 
Em um programa JAVA as classes criadas podem ser organi-
zadas e separadas em pacotes distintos. Os pacotes fornecem uma 
forma melhor de organizar o código.
Agora que temos uma boa noção de herança, vamos conversar 
sobre os modificadores de acesso dos atributos, métodos e classes. 
Para continuarmos a enriquecer nosso conhecimento, vamos 
trabalhar mais um conceito de grande importância para o paradigma 
orientado a objetos, o polimorfismo. 
POLIMORFISMO
Polimorfismo é a possibilidade de algo assumir diferentes formas. 
Nós já demos um exemplo de polimorfismo anteriormente, lembra? Um 
método de uma superclasse quando implementado de diferente forma 
em uma subclasse é um exemplo de polimorfismo. Não exemplificamos 
anteriormente para aprofundarmos aqui. Observe a Figura 89.
164 Linguagem deProgramação
Figura 89. Exemplo de Polimorfismo
class Animal {
//Métodos
public void qualOsom(){
System.out.println(“Animal qualquer!”);
}
}
class Gato extends Animal{
//Métodos
public void qualOsom() {
System.out.println(“MIAU”);
}
}
class Cachorro extends Animal{
//Métodos
public void qualOsom() {
System.out.println(“AUAU”);
}
}
class Galinha extends Animal{
//Métodos
public void qualOsom() {
System.out.println(“COCOCO”);
}
}
}
Fonte: Autoria própria 
Tema 4
 Linguagens Orientadas a Objetos 165
A classe “Animal” foi criada como exemplo. A classe contém unica-
mente um método “qualOsom()” que servirá para definir o som de algum 
animal. Um animal é algo muito subjetivo e se você perguntar “qual o som 
feito por um animal?”, obviamente teríamos diversas respostas e dúvidas 
sobre o questionamento. Mas, fora criada uma classe animal para agru-
par atributos e métodos comuns a qualquer animal, como por exemplo a 
emissão de um som. Vamos agora especializar a classe “Animal”!
Como classes mais especializadas (ou subclasses), foram criadas 
“Gato”, “Cachorro” e “Galinha” todas estendendo da superclasse “Ani-
mal”. Cada subclasse possui sua própria implementação para o método 
“qualOsom()”. A ideia chave do nosso algoritmo é que ao invocarmos o 
método “qualOsom()”, o objeto correspondente à classe instanciada res-
ponda corretamente. Apenas como observação, o comando “System.out.
println” exibe na console do JAVA uma informação qualquer. Vamos tes-
tar nosso exemplo de polimorfismo na Figura 90. 
Figura 90. Testando polimorfismo em JAVA
public class TestaPolimorfi smo {
public static void main ( String [] args ) {
Gato g= new Gato();
Cachorro c = new Cachorro();
Galinha gl = new Galinha();
g.qualOsom();
c.qualOsom();
gl.qualOsom();
}
}
Fonte: Autoria própria
166 Linguagem deProgramação
Foram criados três objetos: um do tipo “Gato”, um “Cachorro”; e 
outro “Galinha”. Depois de instanciados, cada objeto chama o mesmo 
método “qualOsom()”. A saída é, respectivamente:
1. MIAU;
2. AUAU;
3. COCOCO.
Dessa forma, temos um mesmo método respondendo de for-
ma distinta.
Espero que os conceitos abordados neste conteúdo tenham fi-
cado claros! Vamos continuar nosso mergulho no paradigma Orienta-
do a Objetos no próximo conteúdo!
LEITURA COMPLEMENTAR 
 CAELUM. Herança, reescrita e polimorfismo. Disponível em: < 
https://www.caelum.com.br/apostila-java-orientacao-objetos/
heranca-reescrita-e-polimorfismo/#7-2-reescrita-de-metodo >. 
Acesso em: 12.Jul.2016.
Essa indicação de leitura traz um curso de JAVA e Orientação a Obje-
tos muito completo, disponibilizado gratuitamente pela empresa CA-
ELUM. No link indicado você entenderá o porquê do uso da herança 
e do polimorfismo, partindo do princípio do aproveitamento de códi-
go. Além disso, são apresentados exemplos de com uma superclasse 
“Funcionário” e exemplos próximos à de uma implementação para um 
problema do mundo real. No final do capítulo, segundo o autor, você 
será capaz de: dizer o que é herança e quando utilizá-la; reutilizar có-
Tema 4
 Linguagens Orientadas a Objetos 167
digo escrito anteriormente; criar classes filhas e reescrever métodos; 
e usar todo o poder que o polimorfismo dá.
 CAELUM. Modificadores de acesso e atributos de classe. Dis-
ponível em: https://www.caelum.com.br/apostila-java-orienta-
cao-objetos/modificadores-de-acesso-e-atributos-de-classe/#-
6-3-getters-e-setters>. Acesso em:21.Jul.2016.
Segue um trecho da apostila da CAELUM que discorre sobre a questão 
de visibilidade, debatida neste tópico. Segundo o autor, ao final da leitu-
ra você será capaz de: controlar o acesso aos seus métodos, atributos e 
construtores através dos modificadores private e public; escrever méto-
dos de acesso a atributos do tipo getters e setters; escrever construtores 
para suas classes; e utilizar variáveis e métodos estáticos.
PARA REFLETIR 
Ao longo de sua carreira, acadêmica ou profissional, você deve ter 
desenvolvido ou estudado em cima de algoritmos desenvolvidos em 
paradigma procedural. Rememore alguns exemplos e imagine como 
esses poderiam ser melhor aproveitados com os conceitos até então 
estudados. Como a herança poderia auxiliar para um melhor aprovei-
tamento de código já escrito? Como a orientação a objetos, como um 
todo, poderia melhorar seus códigos em quesitos como manutenibili-
dade, evolução do software ou para uma menor reescrita de códigos. 
 
168 Linguagem deProgramação
4.3 
APROFUNDANDO NA ORIENTAÇÃO A OBJETOS: CONSTRUTORES, 
MODIFICADORES DE ACESSO, CLASSE ABSTRATA, 
MÉTODO ABSTRATO E INTERFACES
Vamos continuar com mais conceitos e exemplos da Orientação a 
Objetos. Continuaremos o assunto agora falando sobre construtores.
CONSTRUTORES
Já vimos que é possível definir os atributos de um objeto após 
sua criação através da invocação dos métodos, entretanto, existe um 
“método especial” chamado construtor que permite que os atributos 
sejam definidos assim que o objeto é instanciado. O construtor é cria-
do na classe com o mesmo nome dela. Vamos alterar a classe “Casa”, 
criando um construtor para a mesma, observe a Figura 91. 
Figura 91. Construtor da classe “Casa” em JAVA
public class Casa {
//Atributos da Classe
private int Numero;
private String Cor;
private String Aberta;
//Construtor
public Casa (int numero) {
 this.Numero = numero ;
}
Tema 4
 Linguagens Orientadas a Objetos 169
//Métodos da Classe
.
.
.
}
Fonte: Autoria própria 
Os métodos foram removidos apenas para facilitar a visualiza-
ção da classe. Veja que o construtor tem o mesmo nome da classe. No 
nosso exemplo o construtor irá apenas definir o atributo “Numero” do 
objeto, mas é possível definir todos os atributos. Veja como é feita a 
instanciação do objeto na Figura 92.
Figura 92 Instanciando objetos com construtor
public class TestaMetodosCasa {
public static void main ( String [] args ) {
Casa casa1 = new Casa (1);
Casa casa2 = new Casa (2);
Casa casa3 = new Casa (3);
}
}
Fonte: Autoria própria 
São instanciados três objetos, mas, dessa vez, é passado por 
parâmetro um inteiro que correspondeao atributo “Numero”. Então, 
no exemplo ilustrado, teremos a criação de três objetos “Casa”, sendo 
que cada objeto terá um valor inteiro diferente atribuído no exato mo-
mento de sua criação.
170 Linguagem deProgramação
Outro ponto importante na criação do construtor é o conceito de 
sobrecarga. A sobrecarga ocorre quando existe a implementação de 
mais de um construtor com diferentes possibilidades de parâmetros. 
A Figura 93 ilustra essa informação. 
Figura 93. Sobrecarga de construtor
public class Casa {
//Atributos da Classe
private int Numero;
private String Cor;
private String Aberta;
//Construtor
public Casa (int numero) {
 this.Numero = numero ;
}
public Casa (String cor) {
 this.Cor = cor ;
}
//Métodos da Classe
.
.
.
}
Fonte: Autoria própria 
Na alteração realizada na classe “Casa” acima, é possível obser-
var que temos dois construtores. A diferença é que em um, o parâ-
metro passado é um inteiro e no outro uma string. Quando o objeto 
Tema 4
 Linguagens Orientadas a Objetos 171
for criado, caso ele seja instanciado passando um inteiro como parâ-
metro, esse inteiro será atribuído ao atributo “Numero”, se o mesmo 
for criado passando uma string, o construtor utilizado irá atribuir o 
valor ao atributo “Cor” do Objeto. Acompanhe a alteração realizada na 
Figura 94.
Figura 94. Instanciando objetos com sobrecarga de construtor
public class TestaMetodosCasa {
public static void main ( String [] args ) {
Casa casa1 = new Casa (1);
Casa casa2 = new Casa (“Verde”);
Casa casa3 = new Casa (3);
}
}
Fonte: Autoria própria 
O objeto “casa2” ao ser instanciado passa o valor “Verde” para 
o construtor. Por ser uma string, o construtor que recebe o parâmetro 
é o que define o atributo “Cor” do objeto. Os objetos “casa1” e “casa3”, 
por sua vez, continuam passando um inteiro como parâmetro e ati-
vando o primeiro construtor que define o atributo “Numero” do objeto. 
Agora que definimos e exemplificamos construtores, vamos 
abordar um assunto que indiretamente vem sendo desenvolvido du-
rante os exemplos em JAVA, os modificadores de acesso.
172 Linguagem deProgramação
MODIFICADORES DE ACESSO
Os modificadores de acesso são a forma de garantir o encap-
sulamento na linguagem Orientada a Objetos. O programador pode 
definir como os atributos, métodos e classes devem ser acessados. 
Para tal fim, existem os modificadores de acesso que afetam direta-
mente a visibilidade desses. Em JAVA, as palavras reservadas utiliza-
das são: public, private, protected, default. Veja abaixo a explicação de 
cada um:
 public: é a forma de declaração menos restritiva. Pode ser acessa-
da de qualquer lugar e por qualquer entidade;
 private: forma mais restritiva de acesso. Os membros da classe 
definidos como não podem ser acessados ou usados por nenhu-
ma outra classe. O modificador private não pode ser utilizado em 
classes, apenas em métodos ou atributos. Os métodos e atribu-
tos com esse critério de visibilidade podem ser vistos apenas pela 
classe que pertencem;
 protected: só são acessados por código escrito em classes de pa-
cote igual à classe que pertence ou por classes herdadas;
 default: quando nenhum modificador é utilizado, temos que os 
itens tem acesso padrão (default). Esses podem ser acessados 
quando escritos em classes de mesmo pacote da classe na qual 
eles foram declarados.
A Figura 95 faz um resumo dos modificadores acima.
Tema 4
 Linguagens Orientadas a Objetos 173
Figura 95. Modificadores de acesso
Fonte: DEVMEDIA. Modificadores de acesso. Disponível em: <http://www.devmedia.com.br/
modificadores-de-acesso-do-java/25404>. Acesso em: 15. Jul. 2016
Juntamente com os modificadores de acesso, existe outro con-
ceito que pode ser utilizado na orientação a objetos que permite que 
você não instancie diretamente uma classe. Mas porque criar uma 
classe e não criar um objeto?! Veremos abaixo o conceito de classe 
abstrata. 
CLASSE ABSTRATA
Vamos pensar no exemplo já ilustrado, quando temos uma clas-
se “PESSOA” com subclasses “ALUNO” e “PROFESSOR”. Se no seu 
universo computacional só existem duas entidades que devem intera-
gir (o “ALUNO” e o “PROFESSOR”), existe sentido em criar um objeto 
“PESSOA”?
Pensando nisso, e com intuito de eliminar a possibilidade da 
criação de um objeto indesejado no seu programa, surgiu o conceito 
de classe abstrata. A classe abstrata não possibilita sua instanciação. 
Observe a mudança que iremos fazer na Figura 96. 
174 Linguagem deProgramação
Figura 96. Classe abstrata
abstract class Pessoa {
//Atributos da Classe
//Métodos
}
class Aluno extends Pessoa {
//Atributos da Classe
//Métodos
}
class Professor extends Pessoa {
//Atributos da Classe
//Métodos
}
Fonte: Autoria própria 
As implementações das classes foram removidas para facilitar 
o entendimento. Utilizando a palavra reservada “abstract” a classe é 
definida como abstrata. Todos os atributos e métodos são herdados 
às classes filhas, mas ao tentar criar um objeto, por exemplo “Pessoa 
p = new Pessoa();”, o programa não irá compilar. A única forma de ins-
tanciar um objeto é através das suas subclasses.
Tema 4
 Linguagens Orientadas a Objetos 175
MÉTODO ABSTRATO
Os métodos abstratos permitem que o programador declare um 
método em uma superclasse sem nenhuma implementação e esse, obri-
gatoriamente, deverá ser implementado em uma subclasse que o herde.
Vamos utilizar outro exemplo já citado para entendermos o mé-
todo abstrato. A Figura 97 retoma a implementação da classe “Animal” 
e suas subclasses com o conceito de classe abstrata e método abstrato. 
Figura 97. Método abstrato
abstract class Animal {
//Métodos
public abstract void qualOsom();
}
class Gato extends Animal{
//Métodos
public void qualOsom() {
System.out.println(“MIAU”);
}
}
class Cachorro extends Animal{
//Métodos
public void qualOsom() {
System.out.println(“AUAU”);
}
}
class Galinha extends Animal{
//Métodos
public void qualOsom() {
176 Linguagem deProgramação
System.out.println(“COCOCO”);
}
}
}
Fonte: Autoria própria
O método “qualOsom();” da classe “Animal” é declarada como 
abstract, forçando que cada subclasse que a estender implemente o 
seu próprio método “qualOsom()”. Observe que não há sentido em im-
plementar um método que retorne um som para um animal que você 
não sabe qual é! Por isso, você deixa a cargo das classes que estende-
rem a classe pai essa tarefa. O gato sabe que o som que deve fazer é 
“MIAU”, o cachorro “AUAU”, e assim por diante.
INTERFACES
Entendido o conceito de classes e métodos abstratos, fica sim-
ples entender o que são interfaces. As interfaces são um tipo de 
classe abstrata com todos os métodos abstratos. Em uma interface 
os métodos não são implementados e são abstratos e públicos. Uma 
classe pode implementar mais de uma interface e não podem conter 
construtores.
A palavra reservada utilizada para criar uma interface é “inter-
face” e para implementá-la em uma classe, utiliza-se “implements”, 
conforme apresentado no exemplo da Figura 98.
Tema 4
 Linguagens Orientadas a Objetos 177
Figura 98. Interfaces
interface Animal {
 
 public void comer();
}
 
class Lobo implements Animal {
 @Override
 public void comer() {
 System.out.println(“Eu me alimento como um 
lobo!”);
 }
}
 
class Peixe implements Animal {
 
 @Override
 public void comer() {
 System.out.println(“Eu me alimento como um 
peixe!”);
 }
}
 
public class Teste {
 public static void main(String[] args) {
 Animal a = new Lobo();
 Animal b = new Peixe();
 
 a.comer();
 b.comer();
 }
}
Fonte: Disponível em: http://www.rafaeltoledo.net/classes-e-metodos-abstratos. Acesso em: 15. Jul. 2016.
178 Linguagem deProgramação
Vamos aos pontos importantes da implementação acima:
1. Foi criada uma interface “Animal”. O pensamento é o mesmo 
de uma classe abstrata;
2. Foi declarado um método “comer()”. O pensamento é o mes-
mo de um método abstrato;3. Duas classes foram criadas: “Lobo” e “Peixe”. Essas classes 
implementam a interface “Animal”;
4. Foram instanciados dois objetos na classe principal (main) 
do tipo “Animal” lobo e do tipo “Animal” Peixe. 
E, com os conceitos aqui aprendidos, podemos fechar o contéu-
do com a certeza que os pontos mais importantes da orientação a ob-
jeto foram abordados. No próximo conteúdo, iremos fechar este tema 
enriquecendo o seu conhecimento através de exemplos utilizando os 
principais conceitos trabalhados em outras linguagens orientadas a 
objetos. 
LEITURA COMPLEMENTAR 
 ORACLE JAVA. Interfaces. Disponível em: < https://docs.oracle.
com/javase/tutorial/java/IandI/createinterface.html>. Acesso 
em 12. Jul. 2016.
Confira no link acima o material do mantenedor oficial da linguagem 
JAVA falando sobre as interfaces. O material é um tutorial de como 
utilizar essa estrutura desde exemplos de definição de uma interface 
até questões de fixação e exercícios que ajudarão a aprimorar o enten-
dimento da mesma. 
Tema 4
 Linguagens Orientadas a Objetos 179
 MICROSOFT. Modificadores de acesso (Referência de C#). Di-
sponível em: < https://msdn.microsoft.com/pt-br/library/wx-
h6fsc7.aspx>. Acesso em: 12. Jul. 2016. 
O link é uma referência que trata de modificadores de acesso em C#. 
O C# é uma linguagem orientada a objetos mantida pela Microsoft 
que implementa os inúmeros conceitos trabalhados até aqui. É inte-
ressante para você observar que os modificadores de visibilidade são 
utilizados da mesma maneira com certas diferenças em sintaxe. 
PARA REFLETIR 
Pense como seria possível implementar um software para um banco 
utilizando os conceitos que você aprendeu ao longo deste tema até o 
tópico atual. Imagine uma solução onde você tem um banco com pes-
soa física e pessoa jurídica, como você aplicaria o conceito de herança 
nesse caso? Vá mais longe! Você seria capaz de modelar uma classe 
abstrata utilizando esse domínio?
Vou ajudá-lo direcionando seu raciocínio... O banco tem duas entidades, 
como já dito. Ambas entidades podem fazer operações de saque e de-
pósito. O saque da pessoa física incide um desconto maior do que a da 
pessoa jurídica. Já o depósito, é uma operação idêntica para ambos.
Com esse pequeno texto é possível viajar nos conceitos e modelar 
mentalmente suas classes e seus objetos, boa viagem! 
180 Linguagem deProgramação
4.4 
ORIENTAÇÃO A OBJETOS, EXEMPLOS EM OUTRAS LINGUAGENS
Nos tópicos anteriores demos preferência a exemplos em lin-
guagem JAVA. Como o objetivo desse tema não é torná-lo um pro-
gramador JAVA, mas sim prepará-lo para a compreensão dos prin-
cipais conceitos da orientação a objetos, vamos conhecer como são 
implementados os conceitos estudados em outras linguagens desse 
paradigma.
VB.NET
Iremos trabalhar com alguns exemplos da plataforma de desen-
volvimento .NET da Microsoft. A Figura 99 abaixo define uma classe 
em VB.NET. 
Figura 99. Classe em VB.NET
Class Animal
End Class
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: 
<https://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#co-
de-snippet-4>. Acesso em: 10. Jul. 2016
Diferente da classe que vimos em JAVA, em que toda a imple-
mentação era escrita entre chaves ( “{“ e “}” ), o VB.NET utiliza as pa-
lavras reservadas “Class” para iniciar uma classe e “End Class” para 
finalizá-la.
Tema 4
 Linguagens Orientadas a Objetos 181
É possível declarar atributos e suas formas de acesso, assim 
como vimos no JAVA. A Figura 100 ilustra a declaração de um atributo 
com a visibilidade pública (Public).
Figura 100. Declaração de atributo público em VB.NET
Class Animal
Public Nome as String
End Class
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: 
<https://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#co-
de-snippet-4>. Acesso em: 10. Jul. 2016
A sintaxe do VB.NET tem diversas peculiaridades em relação ao 
JAVA. Observe que a declaração do tipo da variável é definida utilizan-
do a palavra reservada “as” acompanhada do tipo. No caso ilustrado, 
estamos criando uma variável “Nome” do tipo String.
A Figura 101 apresenta a declaração de um método na lingua-
gem em questão.
Figura 101. Método em VB.NET
Class Animal
 Public Function mudarNome(ByVal Nome As String)
 ‘ Desenvolvimento do método aqui…
 End Function
End Class
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: <ht-
tps://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#code-s-
nippet-4>. Acesso em: 10. Jul. 2016
182 Linguagem deProgramação
Alguns pontos importantes:
1. Utiliza-se a palavra reservada “Function” após o modifica-
dor de acesso (no exemplo foi o “Public”) para informar que 
será implementado um método;
2. O nome do método criado será “mudarNome” e receberá um 
parâmetro “Nome” do tipo String. Comentamos anterior-
mente que o “as” é utilizado para definir o tipo;
3. A palavra reservada “ByVal” indica que o atributo “Nome” 
que será passado para o método é o valor, em string. Em C# 
e VB.NET há possibilidade de passar o endereço por refe-
rência na memória, mas não entraremos em detalhes para 
não fugirmos do escopo;
4. Só por curiosidade, os comentários em VB.NET são inseridos 
através das aspas simples. No exemplo deixamos proposita-
damente o comentário “Desenvolvimento do método aqui…”.
Iremos apresentar um exemplo de utilização de construtores 
abaixo, observe a Figura 102. 
Figura 102. Construtores em VB.NET
Class Animal
 Sub New(ByVal Nome As String)
 ‘ Desenvolvimento do construtor aqui…
 End Sub
End Class
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: 
<https://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#co-
de-snippet-4>. Acesso em: 10. Jul. 2016
Linguagem e 
Tecnologia 183
Os construtores são sub-rotinas criadas com a palavra reserva-
da “Sub” e finalizada com “End Sub”. No VB.NET se cria uma sub-roti-
na quando há convicção que a tarefa será executada inúmeras vezes, 
ou se essa tarefa será utilizada em muitos programas. O construtor, 
por exemplo, será invocado toda vez que um objeto do tipo “Animal” 
for instanciado.
Vamos agora ver como é declarado um objeto em VB.NET na 
Figura 103. 
Figura 103. Objetos em VB.NET
Dim animal1 as New Animal()
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: 
<https://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#co-
de-snippet-4>. Acesso em: 10. Jul. 2016
O compilador VB.NET utiliza a palavra reservada “Dim” para de-
terminar informações de variável e o tipo de dados. Em nosso exem-
plo é instanciado um objeto “animal1” do tipo “Animal”.
Os métodos definidos na classe, podem ser acessados da mes-
ma forma vista na linguagem JAVA, utilizando o ponto (“.”) acrescido 
do nome do método para invoca-los. Na Figura 104 iremos invocar o 
método “mudarNome()” criado anteriormente. 
Figura 104. Invocando um método em VB.NET
animal1.mudarNome()
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: 
<https://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#co-
de-snippet-4>. Acesso em: 10. Jul. 2016
184 Linguagem deProgramação
Não há grande diferença na sintaxe para a invocação de um mé-
todo. Iremos analisar a utilização de herança em VB.NET. A palavra 
reservada para herdar uma classe é “Inherits”, diferente do “extends” 
que conhecemos em JAVA. Não iremos ilustrar, pois a ideia é a mesma 
já trabalhada. Mas, como exemplo rápido, caso queira criar uma sub-
classe “Cachorro” de uma superclasse “Animal”, basta declarar “Class 
Cachorro Inherits Animal”.
Um ponto interessante do VB.NET são os modificadores utili-
zados para a classe. No JAVA por exemplo, temos a ideia de classe 
abstrata, no VB.NET temos outras especificações. Vejamos abaixo:
1.NotInheritable: Especifica que a classe não pode ser usa-
da como superclasse e, dessa forma, ninguém pode herdar 
dela;
2. MustInherit: Esse modificador funciona como o “abstract” 
do JAVA. A classe atribuído com ele pode ser herdada, en-
tretanto não pode ser instanciada diretamente.
C#
Vamos apenas citar o C# aqui, pois é uma linguagem com a sin-
taxe muito similar com o JAVA e, assim como o VB.NET, é desenvolvi-
da utilizando a plataforma .NET da Microsoft. Na Figura 105 é possível 
observar a similaridade citada.
Figura 105. Exemplo em C#
class Animal
{
private String Nome;
Linguagem e 
Tecnologia 185
 public int mudarNome(string nome)
 {
 // Insert code here
 }
}
Fonte: MICRODOFT. Programação orientada a objeto (C# e Visual Basic). Disponível em: 
<https://msdn.microsoft.com/pt-br/library/dd460654.aspx?cs-save-lang=1&cs-lang=vb#co-
de-snippet-4>. Acesso em: 10. Jul. 2016
No exemplo acima é criada uma classe de nome “Animal”, um atri-
buto “Nome” do tipo String e um método “mudarNome” para manipular o 
atributo “Nome”. Perceba a similaridade com a sintaxe do JAVA. 
PHP: Hypertext Preprocessor
O PHP é uma linguagem para o desenvolvimento de aplicações 
WEB. Nesse tópico escolhermos abordá-la, para deixar claro que a 
orientação a objetos é um paradigma e pode ser utilizado indepen-
dente de plataforma, obviamente, utilizando uma linguagem que im-
plemente os conceitos de orientação a objetos.
Com o PHP será possível definir classes, atributos e métodos, 
assim como instanciar seus objetos. Vamos conferir na Figura 106.
Figura 106. Classes e Métodos em PHP
<?php
class Usuario{
 public $nome;
 public $cpf;
186 Linguagem e Tecnologia
 public $endereco;
 //construtor da classe
 function Usuario(){
 $this->preparaUsuario();
 }
 function preparaUsuario(){
 $this->nome = “Octavio”;
 $this->cpf = “99999999999”;
 $this->endereco = “Rua Fulano de Tal 
número 0 apt 999”;
 }
} ?>
Fonte: DEVMEDIA. Introdução à Orientação a Objetos em PHP. Disponível em: <http://www.dev-
media.com.br/introducao-a-orientacao-a-objetos-em-php/26762>. Acesso em: 10. Jul. 2016
O código acima define uma classe “Usuario” em PHP. Vamos 
aos pontos importantes do código:
1. O primeiro ponto a ser observado é que a linguagem PHP, por ser 
uma linguagem para programação WEB, tem seu código fonte 
dentro de um arquivo que pode estar mesclado com linguagem de 
formatação de páginas, como HTML e textos. Dessa forma, Todo 
bloco de programação PHP está definido entre “<?php” e “?>”;
2. As variáveis são definidas com “$” iniciando-as; 
3. No PHP não é necessário definir o tipo de variável. Ela é 
definida no momento da atribuição. Observe no código que 
são definidos três atributos: $nome, $cpf e $endereco. A 
nenhum deles foi informado seu tipo;
Linguagem e 
Tecnologia 187
4. A palavra reservada “function” define o método;
5. A palavra reservada “$this” faz referência a atributos e mé-
todos de uma mesma classe e a atribuição e invocação é re-
alizada através dos caracteres “->”;
6. O construtor “Usuario” invoca o método “preparaUsuario” 
através do comando “$this->preparaUsuario();”;
7. O “preparaUsuario();”, ao ser invocado, atribui às variáveis 
“$nome”, “$cpf” e “$endereco”, respectivamente, os valores: 
“Octavio”, “99999999999” e “Rua Fulano de Tal número 0 
apt 999”.
No exemplo ilustrado todos os objetos criados serão iniciados 
com os valores definidos no método “preparaUsuario()”.
Para testar a classe, vamos ao exemplo da Figura 107.
Figura 107. Testando a classe
<?php
require_once ‘usuario.php’;
$usuario = new Usuario();
echo $usuario->nome;
echo “<br>”;
echo $usuario->cpf;
echo “<br>”;
echo $usuario->endereco;
?>
Fonte: DEVMEDIA. Introdução à Orientação a Objetos em PHP. Disponível em: <http://www.dev-
media.com.br/introducao-a-orientacao-a-objetos-em-php/26762>. Acesso em: 10. Jul. 2016
188 Linguagem deProgramação
Para testar a classe “Usuario” foi criado outro arquivo. Alguns 
pontos que merecem ser observados:
1. A palavra reservada “require_once” é utilizada para anexar 
um código externo. Nesse caso, a classe desenvolvida ante-
riormente foi salva em outro arquivo de nome “usuário.php”. 
Esse arquivo é requerido para que seja possível instanciar 
um objeto dessa classe;
2. É criada outra variável de nome “$usuario” que será um ob-
jeto do tipo usuário, criado e atribuído através da palavra 
reservada “new” acrescido do nome da classe;
3. A palavra reservada “echo” do PHP imprime na tela um tex-
to. No exemplo, será responsável por imprimir o nome, en-
dereço e cpf;
4. A palavra “<BR>” faz parte de uma instrução de formatação 
de páginas WEB. Informa que é necessário pular uma linha 
antes de exibir a próxima informação.
Em nosso último exemplo, veremos como aplicar o conceito de 
herança com o PHP. Veja o exemplo da Figura 108.
Figura 108. Herança em PHP
require_once ‘usuario.php’;
class Assistente extends Usuario{
 private $ramal;
 
 function Assistente (){
 parent::Usuário();
 $this->ramal = ‘099’;
 }
Tema 4
 Linguagens Orientadas a Objetos 189
 public function getRamal(){
 return $this->ramal;
 }
}
Fonte: DEVMEDIA. Introdução à Orientação a Objetos em PHP. Disponível em: <http://www.dev-
media.com.br/introducao-a-orientacao-a-objetos-em-php/26762>. Acesso em: 10. Jul. 2016
Assim como no exemplo anterior, foi utilizada a palavra reser-
vada “require_once” para anexar o arquivo “usuário.php” que possui a 
classe “Usuario”. Vejamos os detalhes do código acima:
1. É criada uma classe “Assistente”;
2. A palavra “extends” é utilizada para estender da classe 
“Usuario”, tornando a classe “Assistente” uma subclasse que 
herda de “Usuario”;
3. É criado um atributo “$ramal”, ou seja, assistente, além dos 
atributos e métodos da classe “Usuario”, contará também 
com esse novo atributo;
4. A subclasse “Assistente” conta com um construtor que, 
além de atribuir o valor do “$ramal” a 099, invoca o cons-
trutor da classe pai através da palavra reservada “parent”, 
acrescido de “::”, e, seguido do nome da classe pai. Veja que 
interessante essa técnica! 
5. Um método “getRamal()” foi criado apenas para retornar o 
valor do “$ramal.
190 Linguagem deProgramação
Nesse conteúdo conhecemos outras linguagens de programa-
ção orientadas a objetos e como os conceitos são implementados na 
prática. Isso dá uma visão ampla e clara sobre esse paradigma bastan-
te utilizado no meio acadêmico e no mercado de trabalho.
LEITURA COMPLEMENTAR 
 DEVMEDIA. Introdução ao PHP. Disponível em < http://www.
devmedia.com.br/introducao-ao-php/32540>. Acesso em: 
12.Jul.2016. 
O artigo acima traz dicas e apresenta um resumo geral de alguns dos 
principais pontos sobre a linguagem PHP. Indicamos a leitura, pois o 
PHP é uma linguagem amplamente difundida no mercado. Um algo-
ritmo em linguagem PHP pode ser desenvolvido sem utilizar os con-
ceitos de programação orientada a objeto, portanto, também é uma 
linguagem interessante para quem quer começar a desenvolver apli-
cações para a WEB.
 MICROSOFT. Guia de Programação em C#. Disponível em: < ht-
tps://msdn.microsoft.com/pt-br/library/67ef8sbd.aspx>. Acesso 
em: 12.Jul.2016. 
A Microsoft disponibiliza um guia completo para desenvolvimento das 
linguagens de programação da plataforma .NET. O guia acima é uma 
fonte de conhecimento da linguagem orientada a objetos C#. Vale a 
pena a leitura para quem tem interesse em conhecer as peculiaridades 
dessa linguagem.
Tema 4
 Linguagens Orientadas a Objetos 191
PARA REFLETIR 
Neste conteúdo vimos algumas das diversas linguagens orientadas a 
objetos existentes e suas peculiaridades. Grande maioria das estrutu-
ras é comum em todas as linguagens dentro do paradigma estudado. 
Imagine um ambiente conhecido para você, como sua casa, trabalho 
ou faculdade, pense nas entidades existentes e seus relacionamentos. 
Como você poderia transportá-las para um mundo computacional? 
Reflita sobre os as dificuldades que você possivelmente encontraráe 
de que forma elas podem ser contornadas. 
 
RESUMO 
Neste tema descobrimos o paradigma orientado a objetos. Conhece-
mos seus principais conceitos como Abstração, que é a capacidade de 
modelar computacionalmente apenas o que realmente é necessário; 
Encapsulamento, como a habilidade de esconder a implementação 
e deixar exposto apenas o que deve ser utilizada pelo programador; 
herança, que é uma maneira de aproveitar o código já desenvolvido e 
evitar reescrita; e o polimorfismo, que possibilita uma resposta dife-
rente para uma mesma chamada de método.
Aprofundamos o conhecimento ao tratarmos de Construtores, que 
são tipos especiais de métodos utilizados na instanciação de um ob-
jeto; Modificadores de Acesso, que alteram a visibilidade das classes, 
métodos e atributos; Classe Abstrata, como uma classe que não pode 
ser instanciada; Método Abstrato, que é um método que é apenas as-
sinado na classe e deve ser implementado nas subclasses; e Interfa-
ces, uma forma diferente de classe que possui apenas as assinaturas 
dos métodos.
192 Linguagem deProgramação
Vimos ainda, que todos os exemplos foram apresentados na lingua-
gem JAVA, tal linguagem é tipicamente orientada a objetos. Porém, no 
último tópico, pudemos apresentar outras linguagens que utilizam o 
mesmo paradigma, são elas: VB.NET, C# e PHP.
Referências
BARNES, David J. Programação orientada a objetos com Java: Uma 
introdução prática Utilizando o Blue J. São Paulo: Pearson Prentice 
Hall, 2004.
PRESSMAN, Roger S. Engenharia de software. 6.ed. Porto Alegre: 
Bookman, 2006.
SEBESTA, Robert W. Conceitos de Linguagem de Programação. 4.ed.
Porto Alegre: Bookman, 2000.
SEBESTA, R. W. Conceitos de linguagens de programação. 9. ed. Por-
to Alegre: Bookman, 2011. 
SOMMERVILLE, Ian. Engenharia de Software. 7.ed. São Paulo. Pear-
son Addison-Wesley, 2003.

Continue navegando