Buscar

Paradigmas da Programação

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 14 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 14 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 14 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

PARADIGMAS DE 
PROGRAMAÇÃO 
Fabricio Machado da Silva
Programação orientada 
a objetos: modelagem 
de problemas
Objetivos de aprendizagem
Ao final deste texto, você deverá apresentar os seguintes aprendizados:
 � Definir programação orientada a objetos.
 � Identificar as linguagens orientadas a objetos.
 � Aplicar a programação orientada a objetos.
Introdução
A programação orientada a objetos (POO) surgiu como um paradigma 
que apresentava uma disciplina para novos projetos de desenvolvimento 
de software. Etapas com análise e projeto de software que, em outros 
paradigmas, acabavam sendo minimizados na POO, se tornam requisitos 
fundamentais.
Não é difícil imaginar que a POO acabou se tornando um padrão con-
sumido pela engenharia de software e que possibilitou avanços significati-
vos na programação de computadores. Seu uso permitiu que reutilização 
de código se tornasse algo praticamente comum em desenvolvimento 
de software, servindo como base para novos conceitos, como os serviços. 
Neste capítulo, você entenderá o conceito de POO, conhecerá al-
gumas linguagens que implementam esse paradigma e exemplos de 
aplicação em projetos de programas de computador.
Programação orientada a objetos
O conceito de POO tem suas raízes na linguagem de programação Simula 67, 
criada por Alan Kay, o precursor dos conceitos desse paradigma de programa-
ção. Contudo, sua grande evolução foi totalmente alcançada com a chegada 
da linguagem de programação Smalltalk 80: 
De fato, algumas pessoas consideram Smalltalk o modelo base para uma 
linguagem de programação puramente orientada a objetos. Uma linguagem 
orientada a objetos deve fornecer suporte para três recursos chave de lingua-
gem: tipos de dados abstratos, herança e vinculação dinâmica de chamadas 
a métodos (SEBESTA, 2018, p. 547).
Linguagens que suportam a POO são, atualmente, muito usadas. Algumas 
das linguagens de programação mais novas, projetadas para a POO, não 
implementam mais conceitos de linguagens procedurais como as primei-
ras implementavam. Porém, ainda assim, empregam estruturas básicas da 
programação estruturada e são imperativas, como as linguagens Java e C#, 
atualmente muito utilizadas e consideradas exemplos de sucesso de POO.
Smalltalk 80 foi primeira linguagem a implementar completamente os 
conceitos da POO, pois, em 1980, mesmo com a evolução dos módulos e pacotes 
pelas linguagens de programação da época, os problemas ainda persistiam. Um 
dos maiores problemas com os recursos atuais era que não existia mecanismo 
para inicialização e finalização automática do tipo fornecido. Segundo Tucker 
e Noonan (2009, p. 307) “As inicializações normalmente necessárias incluem 
abertura de um arquivo, alocação de memória e inicialização de variáveis locais 
ao módulo”. Já quanto às finalizações, incluem o fechamento de arquivos e 
a liberação de memória.
Além disso, alguns programadores e projetistas começaram a perceber 
que algumas necessidades não eram atendidas com as atuais linguagens de 
programação imperativa de decomposição funcional e abstração de dados, 
como os padrões de graphical user interfaces (GUI), que poderiam ser melhor 
implementadas com o conceito de objetos que pudessem trocar mensagens 
uns com os outros. Uma GUI poderia ser mais facilmente implementada se 
considerarmos, por exemplo, que seus componentes (botões, áreas de texto, 
imagens etc.) são tratados como objetos que podem interagir entre si e com 
o usuário do sistema. 
Programação orientada a objetos: modelagem de problemas2
Assim, a POO surge como um paradigma centrado no desenvolvimento 
de objetos, no lugar da atual decomposição funcional e abstração de dados. 
Na Figura 1, você pode perceber um pouco dessa diferença entre a atual 
programação estruturada e o conceito de objetos.
Figura 1. Comparativo entre programação estruturada e objetos.
Fonte: Adaptada de Gasparotto (2014).
...
...
...
...
...
Dados
globais
Programação estruturada
Procedimento
Procedimento
Procedimento
Procedimento
Procedimento
Dados objeto
Dados objeto
Dados objeto
POO
Método
Método
Método
Método
Método
Método
Em uma linguagem de POO, o encapsulamento dos tipos de dados e suas 
funções é alcançado por meio da implementação das classes. Uma classe é 
uma declaração de um tipo de objeto que encapsula os seus tipos de dados 
pelos seus atributos e funções por meio de seus métodos. É comum ouvir falar 
que uma classe serve como uma matriz de objetos, pois, ao determinar os seus 
atributos e métodos, serve como um modelo para que diversas instâncias de 
um objeto sejam criadas a partir de sua estrutura.
Ao analisar a Figura 1, você pode perceber que um programa em progra-
mação estrutural possui um desempenho melhor que um mesmo programa 
em POO, e isso ocorre pelo fato de, na programação estruturada, um código 
ser executado após o outro sequencialmente, ao passo que na POO são ne-
cessários alguns desvios. Entretanto, a POO traz outros pontos que acabam 
sendo mais interessantes no contexto de aplicações modernas. Como, na 
maioria das aplicações, o desempenho das aplicações não é uma das grandes 
preocupações (devido ao poder de processamento dos computadores atuais), 
a POO se tornou muito difundida. 
3Programação orientada a objetos: modelagem de problemas
Na próxima seção, vamos abordar como as linguagens Java, C# e Python 
implementam os conceitos da POO. Essas linguagens serão exemplos por serem 
muito utilizadas atualmente no contexto de desenvolvimento de software.
Linguagens orientadas a objetos
Agora, você entenderá um pouco sobre as linguagens Java, C# e Python, 
atualmente muito utilizadas e que implementam os conceitos da POO.
Java é uma linguagem de programação que foi desenvolvida pela Sun 
Microsystems no início da década de 1990. Ela se tornou um símbolo da POO, 
inclusive causando certa confusão, por julgarem que a POO era um paradigma 
de Java e não ao contrário (MACHADO; FRANCO; BERTAGNOLLI, 2016, 
p. 54).
De fato, a característica mais marcante da linguagem de programação 
Java está relacionada a sua portabilidade, pois os sistemas construídos não 
são compilados em código nativo da plataforma. Programas em Java são 
compilados para um bytecode, que é executado por uma máquina virtual, a 
Java virtual machine, que permite que os programas escritos em Java possam 
ser rodados em qualquer plataforma compatível com a sua máquina virtual.
Em Java, todo o programa usa classes e objetos, e é fundamental que o 
programador compreenda esses conceitos da POO para conseguir programar 
em Java. Os programas são escritos em pequenos pedaços separados, chamados 
de objetos. Segundo Machado, Franco e Bertagnolli (2016, p. 78), “Objetos 
são pequenos programas que guardam dentro de si os dados — em suma, as 
variáveis — que precisam para executar suas tarefas”. Os objetos também 
trazem em si, como sub-rotinas, as instruções para processar esses dados. 
As variáveis que um objeto guarda são chamadas de atributos, e as suas sub-
-rotinas são chamadas de métodos.
Programação orientada a objetos: modelagem de problemas4
Veja o exemplo de uma classe Cachorro em Java com os atributos nome, 
peso, altura e cor e o método pular().
public class Cachorro{
 public String nome;
 public float peso;
 public float altura;
 public String cor;
 
 void pular{
 if(altura>=80){
 System.out.println("Seu Cachorro pula alto");
 
 }
 }
}
Como você pode observar, a programação em Java é praticamente regrada 
pelos conceitos de POO, e as classes são a base de qualquer código Java. 
Qualquer análise para um novo programa em Java deve partir do entendimento 
do seu contexto e projeção das classes.
Agora, vamos analisar a linguagem C#. A linguagem C# (lê-se C Sharp) 
é definida pela Microsoft, que a desenvolve como uma linguagem de POO 
que faz parte de sua plataforma de desenvolvimento .NET. Embora a lingua-
gem C# tenha sido criada totalmente do zero pela Microsoft, foi baseada na 
linguagem C++, e possui muitos elementos daslinguagens Java e Pascal. 
A plataforma .NET na qual teve seu desenvolvimento inicial, apresentou 
algumas limitações que motivaram que, em 1999, fosse montada uma força 
tarefa para o desenvolvimento de uma nova linguagem para essa plataforma.
Segundo Ledur (2018, p. 108):
A criação da linguagem C# ajudou muito no desenvolvimento do .NET, pois 
a plataforma não precisou se adequar a nenhum código de alguma linguagem 
já existente. O C# foi criado especificamente para .NET, sendo que muitas 
outras linguagens têm suporte à C#.
5Programação orientada a objetos: modelagem de problemas
Os principais objetivos do projeto da linguagem C# são:
 � Ser simples moderna e de propósito geral OO.
 � Ter uma linguagem e suas implementações que forneçam suporte para 
princípios de engenharia de software.
 � Ser destinada à utilização no desenvolvimento de componentes de 
software.
 � Possibilitar a portabilidade dos programas escritos em C#, assim como 
é possível na linguagem Java.
 � Fornecer suporte para a escrita de programa, tanto hospedados local-
mente como incorporados.
A Figura 2 mostra um exemplo da estrutura de uma classe em C#.
Figura 2. Exemplo da estrutura de uma classe em C#.
Fonte: Rodrigues (2017, documento on-line).
Você pode perceber que, assim como em Java, C# possui uma estrutura 
semelhante com a declaração dos atributos da classe logo no início e depois em 
seus métodos, além de uma semelhança na sintaxe entre as duas linguagens, 
o que é explicado devido ao embasamento do C# na linguagem Java.
Programação orientada a objetos: modelagem de problemas6
Para finalizar esta seção, vamos abordar a POO na linguagem de progra-
mação Python, que é uma linguagem de programação bastante utilizada por 
sua facilidade de aprendizado, aliada as suas características de programação 
de alto nível, de script, imperativa, OO e interpretada. 
Python é uma linguagem que permite o desenvolvimento tanto no conceito 
de programação estruturada como a POO. Possui suporte a tipificação dinâ-
mica, recursos de gerenciamento de uso de memória, além de oferecer uma 
abrangente biblioteca padrão. Os interpretadores Python possuem suporte 
para diversos sistemas operacionais, possibilitando a adaptação dos sistemas 
construídos.
A origem do nome Python, apesar de confundido com o animal cobra, 
na realidade é oriunda do grupo de comédia britânico que era assistido pelo 
criador da linguagem, chamado Monty Python, formado por Graham Cha-
pman, John Cleese, Eric Idle, Michael Palin, Terry Jones e Terry Gilliam. 
Carinhosamente, são chamados de Pythonistas os programadores Python, 
e as referências aos trabalhos do grupo de comédia estão espalhadas pelos 
tutoriais e sua documentação (LUTZ; ASCHER, 2007).
Python é uma linguagem muito simples, fácil de usar e aprender, apesar 
disso, também é uma linguagem extremamente robusta e utilizada nas mais 
diversas soluções:
 � back-end de sistemas Web, customer relationship management (CRM), 
ou gerenciamento de relacionamento com o cliente; 
 � pesadas simulações de engenharia;
 � processamento pesado de efeitos especiais de filmes;
 � soluções de análise de dados (data analytics);
 � aprendizado de máquina, do inglês machine learning (ML).
Veja o exemplo de uma classe Pessoa em Python.
class Pessoa:
 def _ init _ (self, nome, idade):
 self.nome = nome
 self.idade = idade
 
 def setNome(self, nome):
 self.nome = nome
 
7Programação orientada a objetos: modelagem de problemas
 def setIdade(self, idade):
 self.idade = idade
 
 def getNome(self):
 return self.nome
 
 def getIdade(self):
 return self.idade
Apesar da sintaxe do Python ser um pouco diferente da sintaxe de Java e 
C#, é possível verificar a estrutura da classe com a definição de atributos e 
métodos e que Python é outro exemplar de linguagem OO. Na próxima seção, 
você verá alguns exemplos da aplicação da programação OO em classes de 
exemplos, para fixar o entendimento.
Desenvolvendo com programação 
orientada a objetos
Para ajudar a elucidar o conceito de POO, vamos começar analisando a se-
guinte situação: um exemplo em Java que demonstra a criação da classe 
Pessoa com os atributos nome, dataNascimento e CPF; e o método 
tirarCopias, que calcula o custo da geração de cópias em um sistema de 
gestão de impressões de uma escola. Esse sistema deve calcular o valor da 
cópia embasado na seguinte regra:
 � para alunos da escola, o valor unitário da cópia será de R$ 0,07;
 � para os demais usuários, o valor unitário será de R$ 0,10.
A diferença é que este requisito será implementado com os seguintes 
conceitos da POO:
 � classes;
 � heranças.
Programação orientada a objetos: modelagem de problemas8
Observe na Figura 3, onde consta a classe Pessoa.
Figura 3. Classe Pessoa em Java.
Fonte: Geovane (2012, documento on-line).
Na classe Pessoa podemos observar os seguintes atributos:
 � nome;
 � cpf;
 � data_nascimento.
Observamos, também, que essa classe possui o método tirarCopias, 
que faz o cálculo do valor da cópia para pessoas em geral, ou seja, pessoas 
que não são alunos. Porém, você pode estar se perguntando, onde estão os 
dados do aluno e o método que faz o cálculo do valor da cópia quando se 
trata de um aluno? 
Esses dados estão na classe Aluno, mas, como o Aluno também é uma 
pessoa e tem alguns atributos que são comuns as demais pessoas, não vamos 
repetir na classe Aluno. A Figura 4 mostra como ficaria a classe Alunos 
em Java.
9Programação orientada a objetos: modelagem de problemas
Figura 4. Classe Alunos em Java.
Fonte: Geovane (2012, documento on-line).
É possível, portanto, observar que no início da classe Aluno existe a 
declaração extends. Essa declaração significa que a classe Aluno está 
dizendo que herda a classe Pessoa, dessa forma, os atributos que são comuns 
à classe Pessoa não necessitam ser repetidos. Além disso, percebe-se que a 
classe Aluno possui o atributo matrícula, que é específico do Aluno.
Por fim, veja que, na classe Aluno, o método tirarCopias é alterado 
de acordo com o valor específico para os Alunos, o que é possível em razão 
de um outro recurso de POO: o polimorfismo. Polimorfismo é um recurso que 
permite ao objeto ter um comportamento diferente, dependendo da situação. 
Nesse caso, o cálculo do valor da cópia se altera por conta da situação de 
desconto de aluno.
Pelos exemplos apresentados, percebe-se na prática alguns recursos e usos 
da programação OO e seus benefícios para a programação, possibilitando, 
principalmente, a reutilização do código.
Conceitos como os observados nos exemplos das Figuras 3 e 4 são casos 
comuns em POO, por isso é importante todo programador conseguir abstrair 
classes com seus atributos e métodos separados e, quando utilizar conceitos 
bases da POO, como herança de classes, evitar reutilização de código.
Programação orientada a objetos: modelagem de problemas10
GASPAROTTO, H. M. Os 4 pilares da Programação Orientada a Objetos. DevMedia, 
Rio de Janeiro, 2014. Disponível em: https://www.devmedia.com.br/os-4-pilares-da-
-programacao-orientada-a-objetos/9264. Acesso em: 15 set. 2019.
GEOVANE, H. Entendendo e Aplicando Herança em Java. DevMedia, Rio de Janeiro, 2012. 
Disponível em: https://www.devmedia.com.br/entendendo-e-aplicando-heranca-em-
-java/24544. Acesso em: 15 set. 2019.
LEDUR, C. L. Desenvolvimento de sistemas com C#. Porto Alegre: SAGAH, 2018. 268 p.
LUTZ, M.; ASCHER, D. Aprendendo Python. 2. ed. Porto Alegre: Bookman; O’Reilly, 2007. 
566 p.
MACHADO, R. P.; FRANCO, M. H. I.; BERTAGNOLLI, S. C. Desenvolvimento de software III: 
programação de sistemas web orientada a objetos em Java. Porto Alegre: Bookman, 
2016. 220 p. (Série Tekne; Eixo Informação e Comunicação).
RODRIGUES, J. Como criar minha primeira classe em C#. DevMedia, Rio de Janeiro, 2017. 
Disponível em: https://www.devmedia.com.br/como-criar-minha-primeira-classe-em-
-csharp/38785. Acesso em: 15 set. 2019.
SEBESTA,R. W. Conceitos de linguagem de programação. 11. ed. Porto Alegre: Bookman, 
2018. 758 p.
TUCKER, A. B.; NOONAN, R. E. Linguagens de programação: princípios e paradigmas. 2. 
ed. Porto Alegre: AMGH, 2009. 630 p.
Leituras recomendadas
EDELWEISS, N.; LIVI, M. A. C. Algoritmos e programação: com exemplos em Pascal e C. 
Porto Alegre: Bookman, 2014. 476 p. (Série Livros Didáticos Informática UFRGS).
MILETTO, E. M.; BERTAGNOLLI, S. C. Desenvolvimento de software II: introdução ao de-
senvolvimento web com HTML, CSS, JavaScript e PHP. Porto Alegre: Bookman, 2014. 
276 p. (Série Tekne; Eixo Informação e Comunicação).
NICOLETTI, M. C. A cartilha Prolog. São Carlos: Edufscar, 2003. 124 p. (Série Apontamentos).
OKUYAMA, F. Y.; MILETTO, E. M.; NICOLAO, M. Desenvolvimento de software I: conceitos bá-
sicos. Porto Alegre: Bookman, 2014. 236 p. (Série Tekne; Eixo Informação e Comunicação).
PINHEIRO, F. A. C. Elementos de programação em C: em conformidade com o padrão 
ISO / IEC 9899. Porto Alegre: Bookman, 2012. 548 p.
11Programação orientada a objetos: modelagem de problemas

Outros materiais