Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 1/20
ESTRUTURA DE DADOSESTRUTURA DE DADOS
COM ORIENTAÇÃO A OBJETOSCOM ORIENTAÇÃO A OBJETOS
UNIDADE 1 – UNIDADE 1 – INTRODUÇÃO À ORIENTADA A OBJETOS (INTRODUÇÃO À ORIENTADA A OBJETOS (
Autora: Ana Lucia PegettiAutora: Ana Lucia Pegetti
Revisor: Marcos Paulo Lobo de CandiaRevisor: Marcos Paulo Lobo de Candia
INICIAR
1.1 Introdução à Orientação a Objetos (OO)
O desenvolvimento de programas tem como objetivo a implementação de funcionalidades que podem automatizar
processos repetitivos do dia a dia, ganhando-se tempo para realização de outras atividades. Embora pareça uma
atividade complexa e abstrata, à medida que se adquire prática, passa a ser realizada com naturalidade (LEITE,
2016). Para que seja possível programar, os desenvolvedores de software utilizam linguagens de programação de
alto nível, ou seja, linguagens cuja sintaxe se aproxima da linguagem humana, pois possuem um nível de abstração
de fácil entendimento, com uma estrutura de comandos que é facilmente compreendida pelas pessoas. Existem
várias linguagens de programação e cada uma tem suas especificidades, dependendo do paradigma de
Introdução
Caro estudante,
A Orientação a Objetos, ou OO, comumente referenciada como Programação Orientada a Objetos (POO), iniciou-se
na década de 80 e ainda hoje é o paradigma de programação mais utilizado pelos desenvolvedores de softwares.
Como o próprio nome sugere, se refere a linguagens que usam objetos na programação, e tem como objetivo
implementar entidades do mundo real, como herança, ocultação, polimorfismo etc. na programação.
O principal objetivo do POO é vincular os dados e as funções que operam neles de modo que nenhuma outra parte
do código possa acessar esses dados, exceto aquela função. A vantagem está em que, em vez de escrever um
programa, cria-se uma classe, que é uma espécie de template contendo variáveis e funções. Esse tipo de
programação se tornou uma parte fundamental do desenvolvimento de software e entender seus princípios é
essencial para os profissionais de tecnologia da informação. Então, aproveite bem conteúdo desta unidade.
Bons estudos!
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 2/20
programação implementada.
Um paradigma de programação é um estilo, um modelo de programação implementado por uma linguagem,
manifestando-se na forma como o código é construído a fim de se solucionar um problema específico. De acordo
com Deitel e Deitel (2017), toda linguagem de programação se enquadra em algum dos paradigmas de programação
existentes: programação binária, programação procedural, programação orientada a objetos, programação genérica
ou programação funcional.
Neste contexto, a orientação a objetos é um paradigma de programação que surgiu com a finalidade de sanar as
limitações dos paradigmas que a antecederam (binária e procedural) e, segundo Leite, (2016, p. 17) “tem como
principal característica uma melhor e maior expressividades das necessidades do nosso dia a dia [...] e possibilita
criar unidades de código mais próximas da forma como pensamos e agimos”.
Também chamada de Programação Orientada a Objetos (POO), tenta resolver um obstáculo conceitual que tem sido
um grande desafio para os programadores: combinar em uma única entidade os dados e as funções que os
manipulam, de forma a resolver problemas em termos de objetos ou entidades reais, com possibilidade de
reutilização de código, servindo como um elo entre os problemas existentes e as soluções computacionais
(MENDES, 2010). Com isso, consegue-se um processo de desenvolvimento com maior qualidade, mais produtivo e
um código com manutenção mais fácil.
A seguir, serão abordados dois importantes conceitos na orientação a objetos, classes e objetos. Linguagens de
programação orientadas a objetos devem possibilitar a implementação de classes que servirão como modelos para
os objetos do sistema.
Linguagens de programação
As linguagens de programação evoluem ao longo dos anos, mudando a forma de criar e desenvolver softwares.
Muitas linguagens de programação são criadas todos os anos para resolver melhor determinados tipos de problemas
relacionados ao desenvolvimento de software. A seguir, mostraremos o histórico dessa evolução.
» Clique nas abas para saber mais sobre o assunto
VOCÊ O CONHECE?
O termo Programação Orientada a Objetos (POO) foi criado por Alan Kay, autor da linguagem de programação
Smalltalk. Alan Curtis Kay (Springfield, 17 de maio de 1940) é conhecido por ser um dos pais do conceito de
programação orientada a objetos, que lhe valeu o Prêmio Turing em 2003. Graduado em matemática e biologia
molecular pela Universidade do Colorado, formulou sua "analogia algébrico-biológica”, lançando um postulado de
que o computador ideal deveria funcionar como um organismo vivo, isto é, cada "célula" se comportaria
relacionando-se com outras, a fim de alcançar um objetivo, contudo, funcionando de forma autônoma. As células
poderiam também se reagrupar para resolver um outro problema ou desempenhar outras funções. Assim, nasce a
Orientação a Objetos, que depois foi defendida em sua tese de doutorado na Universidade de Utah.
 Anos 1970 Anos 1980 Início dos anos 1990
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 3/20
1.1.1 Classes e objetos
Wu (2010) afirma que os dois conceitos mais importantes na programação orientada a objetos (POO) são a classe e
o objeto .  Em orientação a objetos, entende-se por classe um elemento conceitual que descreve um conjunto de
objetos com características similares. Mais formalmente, é um conceito que encapsula abstrações de dados e
procedimentos que descrevem o conteúdo e o comportamento de entidades do mundo real, representadas por
objetos, definindo seu estado e comportamento através da implementação de atributos e métodos (PRESSMAN,
2016). Uma outra possível forma de se definir uma classe é uma descrição das propriedades ou estados possíveis
de um conjunto de objetos, bem como os comportamentos ou ações aplicáveis a estes mesmos objetos.
Em termos mais gerais, um objeto é uma coisa tangível e intangível que podemos imaginar. Um programa escrito no
estilo orientado a objetos consistirá em objetos que interagem. Por exemplo, para um programa que monitora os
alunos residentes de um dormitório de faculdade, podemos ter muitos objetos de Aluno, Sala e Andar. Para outro
programa com a finalidade de rastrear clientes e estoque para uma loja de bicicletas, podemos ter Cliente, Bicicleta e
muitos outros tipos de objetos (WU, 2010).
Um objeto é composto de dados e operações que manipulam esses dados. Por exemplo, um objeto Aluno pode ser
composto por dados como nome, sexo, data de nascimento, endereço residencial, número de telefone e idade e
operações para incluir e modificar os valores desses dados.
Segundo Puga e Rissetti (2004), pode-se imaginar um objeto como algo que guarda os dados e informações dentro
da sua estrutura, possuindo um comportamento definido pelas suas operações. Este conceito, como será visto
adiante, se chama encapsulamento, e é um dos pilares da orientação a objetos. Veja na Figura 1 o exemplo de
visualização de um objeto:
Os anos 1970 foram anos de grande desenvolvimento de linguagens de programação e
paradigmas de programação. A maioria dos paradigmas de programação desse período são
os mais utilizados até os dias de hoje. Esses anos viram o surgimento do paradigma de
programação estruturada. Linguagens como Simula, C, Smalltalk, Prolog, ML ou SQL são
provavelmente as linguagens de programação mais importantes e revolucionárias deste
período.Cada uma delas gerou e influenciou uma família de outras linguagens de
programação que hoje são as mais utilizadas, como Java, C ++ ou Python.
Um dos primeiros conceitos básicos da orientação a objetos é o do próprio objeto. Um objeto
é uma extensão do conceito de objeto do mundo real, em que se podem ter coisas tangíveis,
um incidente (evento ou ocorrência) ou uma interação (transação ou contrato).[...] A
identificação dos objetos em um sistema depende do nível de abstração de quem faz a
modelagem, podendo ocorrer a identificação de diferentes tipos de objetos e diferentes tipos
de classificação desses objetos. Não existe um modelo definitivamente correto; isso vai
depender de quem faz a modelagem e de processos sucessivos de refinamento, até que se
possa encontrar um modelo adequado a sua aplicação (PUGA; RISSETTI, p.36, 2004).
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 4/20
Figura 1 – Visualização do objeto.
Fonte: PUGA e RISSETTI, 2004, p.37. (Adaptado).
Para que os objetos sejam criados, é preciso que sejam fornecidos alguns padrões e definições para o computador,
que são as classes. Uma classe é um tipo de molde que determina o que os objetos podem ou não fazer
(comportamento) e quais características (atributos) eles devem ter (WU, 2010).
Um objeto é chamado de instância de uma classe, de forma que vários objetos podem ser originados de uma mesma
classe. Assim, uma classe atua como uma fábrica de objetos e, depois que uma classe é definida, podem-se criar
quantas instâncias da classe forem necessárias para o funcionamento do programa. Para construir esse tipo de
programa, é necessária a utilização de linguagens orientadas a objetos.
O Diagrama 1 mostra como um diagrama de classe é representado pela UML ( Unified Modeling Language ou
Linguagem de Modelagem Unificada). A UML é um padrão mundialmente adotado para a documentação visual de
sistemas orientados a objetos e mantida pela OMG ( Object Management Group ). O conceito de classes é muito
importante para o entendimento da orientação a objetos.
Diagrama 1 – Representação gráfica de um diagrama de classe
Fonte: Elaborado pela autora, 2020.
#PraCegoVer : A figura representa o conceito de um objeto e é constituída de duas formas
geométricas principais: um hexágono desenhado com linha verde dupla, dentro dele, existem
dois cubos azuis. Nas paredes externas da figura, nas extremidades do hexágono, há uma
seta com a palavra “operações”. Apontando para o cubo no interior da figura, há uma seta
com a palavra “estrutura de dados”. Assim, o hexágono representa as operações, e o cubo
interno, as estruturas de dados.
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 5/20
Falamos em um conjunto básico de atributos e operações semelhantes, pois veremos adiante que nem todos os
objetos da mesma classe precisam ter exatamente o mesmo conjunto de atributos e operações.
1.1.2 Visibilidade de classes, atributos e métodos
Na orientação a objetos, existe um conceito que está diretamente relacionado à capacidade de se controlar o acesso
(manipulação) de classes, atributos e métodos, que são modificadores de acesso conhecidos como visibilidade. Leite
(2016, p.131) diz que:
A POO provê três tipos distintos de visibilidade: privada, protegida e pública, sendo caracterizadas em linguagens
como Java e C++, respectivamente como: private , protected e public . Mas nem todas as linguagens orientadas a
objetos implementam completamente o conceito de visibilidade.
A visibilidade e seus modificadores de acesso definem quais classes podem usar ou ter acesso a um determinado
elemento. Tais elementos podem ser uma classe, atributos de uma classe (variáveis) ou métodos de uma classe.  A
seguir, serão apresentadas cada uma dessas visibilidades:
» Clique nas setas ou arraste para visualizar o conteúdo
#PraCegoVer : A figura representa um modelo de diagrama de classes da UML. São
apresentados dois retângulos divididos em três partes cada um: na parte superior, o nome da
classe, e na parte central, os tipos de dados de cada classe, e na parte inferior, as operações
ou métodos da classe. Cada retângulo representa uma classe do diagrama. São elas: Mesa e
Consumo, que estão interligadas por meio de uma reta, que na UML representa um
relacionamento de associação.
VOCÊ SABIA?
De acordo com o Tiobe Index, acessado em novembro/2020, mesmo em constante queda, Java continua
entre as tecnologias mais usadas entre programadores. Desde 2002, este instituto realiza um estudo e
organiza uma lista com as linguagens de programação mais usadas pelos desenvolvedores no mundo todo,
atualizando os resultados mensalmente. Desde de 2019, C, Java, Python, C++ e C# são as linguagens mais
utilizadas pelos profissionais da área de TI. Acesse o site < https://www.tiobe.com/tiobe-index/ > e
acompanhe, na primeira página, o ranking atualizado.
Um modificador de acesso tem como finalidade determinar que ponto uma classe, atributo ou
método pode ser utilizado. A utilização de modificadores de acesso é fundamental para o uso
efetivo da orientação a objetos. Algumas boas práticas e conceitos só são atingidos com uso
corretos deles.
● A classe pode ser instanciada por qualquer outra classe;
● Atributos e métodos são acessíveis (leitura, escrita) por objetos de qualquer classe.
PRIVATE
● Não se aplica a classes;
● Atributos só podem ser acessados por objetos da mesma classe;
https://www.tiobe.com/tiobe-index/
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 6/20
De forma resumida, os modificadores de acesso podem ser utilizados nos seguintes elementos da OO, conforme
mostra o Quadro 1:
Quadro 1 –  Aplicação dos modificadores de acesso
MODIFICADOR SÍMBOLO CLASSE ATRIBUTOS MÉTODOS
public + sim sim sim
# nãoprotected simsim
private
default sim sim~
-
sim
sim simnão
Fonte: Elaborado pela autora, 2020.
Outra informação importante em relação à visibilidade é referente ao grau de visibilidade, que se refere a quem pode
utilizar os elementos que estejam indicados com os modificadores de acesso. Dessa forma, o Quadro 2 apresenta,
de forma resumida, que elemento pode acessar o que em um programa orientado a objetos.
Quadro 2 –  Grau de visibilidade
MODIFICADOR CLASSE PACKAGE SUBCLASSE GLOBAL
public sim sim sim sim
● Métodos só podem ser chamados por métodos da própria classe.
PROTECTED
● Não se aplica a classes;
● Atributos e métodos são acessíveis dentro da própria classe, das subclasses e das
classes que façam parte do mesmo pacote.
NADA ESPECIFICADO (DEFAULT)
● Classe é visível somente por classes do mesmo pacote;
● Atributos e métodos são acessíveis somente dentro das classes que pertencem ao
mesmo pacote;
● Este modo de acesso é também chamado de default
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 7/20
sim simprotected nãosim
private
default não nãosim
sim
não
não nãonão
Fonte: Elaborado pela autora, 2020.
Entenda que a subclasse ou classe derivada são as classes derivadas ou classes-filha em uma hierarquia de classes
(que seram vistas mais adiante). São classes que herdam características e comportamentos de outras classes
(BARNES; KOLLING, 2004); e pacotes são namespaces utilizados para organizar conjuntos de classes e interfaces
relacionados, tentando, assim, facilitar o gerenciamento dos elementos produzidos no desenvolvimento, que podem
se tornar imensos; e por global, elementos que podem ser acessados por classes de outros projetos ou sistemas.
1.1.3 Estruturade uma linguagem OO
Escrever um programa utilizando uma linguagem orientada a objetos significa que se está modelando o sistema com
conceitos existentes no mundo e que fazem parte domínio do problema. Esses conceitos, ou objetos, variam de
acordo com o programa que está sendo escrito e podem ser categorizados. É para isso que serve uma classe:
descrever, de forma abstrata, todos os objetos de um tipo particular (BARNES; KOLLING, 2004).
Para entender melhor esses conceitos, veja o exemplo sugerido por Barnes e Kolling (2004). Suponha que um
desenvolvedor deseja modelar uma simulação de tráfego. Uma entidade deste domínio são os carros. O que é um
carro nesse contexto? É uma classe ou um objeto? Algumas perguntas podem ajudar a tomar uma decisão. Qual é a
cor de um carro? Quão rápido ele pode ir? Onde está agora? Perceba que não se pode responder a essas perguntas
até que um carro específico seja focado.
A razão é que a palavra “carro” neste contexto se refere ao carro da classe, ou seja, carros de uma forma geral, não
um carro em particular. Agora, caso o foco esteja sendo dado para o seu carro estacionado dentro da sua garagem,
 fica fácil responder às perguntas anteriores, porque fala-se, por exemplo, de um carro preto, que não corre muito,
estacionado na sua garagem. Trata-se de um objeto ou instância da classe carro. Utiliza-se o termo instância, que é
quase sinônimo de objeto para enfatizar que ele é de uma classe particular (como “este objeto é uma instância da
classe carro”).
Neste exemplo, pode-se observar dois (abstração e encapsulamento) dos quatro pilares da orientação a objetos que
caracterizam qualquer linguagem de programação que dê suporte a este paradigma de programação.
Para que seja possível entender do que se trata a POO, é necessário conhecer quais são os requisitos, ou segundo
alguns especialistas, os princípios aos quais uma linguagem de programação deve atender para pertencer a este
paradigma de programação.
A programação orientada a objetos representa uma mudança no enfoque da programação, na
forma como os sistemas eram vistos até então. Representa uma quebra de paradigma,
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 8/20
Sabe-se que a classe é um modelo para os objetos, definindo seu comportamento (método) e seus atributos.
Desenvolver um sistema com muitas classes é uma tarefa complexa, de forma que se faz necessária uma maneira
eficiente para que possam ser gerenciadas, reduzindo, assim, sua complexidade. Para isso, os seguintes princípios
devem ser aplicados: encapsulamento , abstração , herança e polimorfismo .
Fonte: Elaborado pela autora, 2020.
» Clique nas abas para saber mais sobre o assunto
revolucionando todos os conceitos de projeto e desenvolvimento de sistemas existentes
anteriormente (PUGA; RISSETTI; p.34, 2004).
 
Encapsulamento Abstração Herança Polimorfismo
Encapsulamento é o processo de vincular dados e funções, de forma que fiquem
escondidos do mundo exterior. Este princípio da OO permite esconder os dados internos
do objeto e fornece a capacidade de atualizar os dados por meio de métodos expostos.
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3d… 9/20
Diagrama 2 – Representação gráfica de herança e polimorfismo
Fonte: Elaborado pela autora, 2020.
Desta forma, só é possível conhecer o comportamento externo de uma classe, e não quais
são seus dados e como as tarefas são realizadas. Ocultar as partes internas do objeto ou
permitir o acesso a ele apenas por meio de uma função, além de proteger a integridade
dos objetos, impede que os usuários configurem os dados internos ou o componente de
forma que possa levar a um estado inválido ou inconsistente do objeto. Classes (e seus
objetos) encapsulam, isto é, contêm seus atributos e métodos. Os atributos e métodos de
uma classe (e de seu objeto) estão intimamente relacionados. Os objetos podem se
comunicar entre si, mas eles em geral não sabem como outros objetos são
implementados — os detalhes de implementação permanecem ocultos dentro dos
próprios objetos. Esse ocultamento de informações, como veremos, é crucial à boa
engenharia de software (DEITEL; DEITEL, 2017).
O encapsulamento é o mecanismo da POO no qual os membros de uma classe (atributos e
métodos) se juntam em uma caixa-preta, e sua visibilidade pode ser definida pelos
modificadores de acesso como privado , público e protegido , como visto anteriormente.
#PraCegoVer : A figura representa um relacionamento de hierarquia entre classes de um
sistema. Trata-se de um organograma de 3 níveis. No topo (ou seja, no primeiro nível), está a
classe-mãe, Pessoa. A classe Pessoa tem atributos e métodos. No segundo nível, vinculados
à classe Pessoa, estão as classes Aluno e Funcionário, que são filhas da classe Pessoa. Além
de herdarem as características (atributos e métodos) da classe Pessoa, elas também têm suas
próprias características. No terceiro nível da hierarquia de classes, estão as classes
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 10/20
O Diagrama 2 apresenta um relacionamento de hierarquia entre as classes dos sistema. No topo, está a classe
Pessoa . No nível abaixo, estão as classes Aluno e Funcionário , que herdam os atributos e métodos da classe
Pessoa . Pode-se pensar que todo funcionário, além dos atributos básicos herdados de Pessoa , tem um salário e
uma forma para calcular o seu salário. No caso de um professor, o cálculo do seu salário é diferente do cálculo de
um funcionário do administrativo, então, a classe Professor precisa reescrever a função de calcular salário, com as
especificidades do cálculo do salário de um professor.
Administrativo e Professor que são vinculadas à classe Funcionário. Todas elas, além de ter
suas próprias características, também herdam as características de suas classes-mãe.
VOCÊ SABIA?
Uma vez entendidos os pilares da orientação a objetos, é possível aplicá-los a qualquer linguagem de
programação que dê suporte à orientação a objetos. Desta forma, você não precisa aprender OO para Java
ou OO para Python ou OO para C++: você aprende os conceitos e depois aplica-os em cada uma das
linguagens que suportam OO, utilizando seus comandos específicos. Para saber um pouquinho mais sobre
esses pilares, assista ou escute ao DevCast “Os pilares da Programação Orientada a Objetos” realizado pela
da DevMedia, disponível no link a seguir:< https://www.devmedia.com.br/os-pilares-da-programacao-
orientada-a-objetos/38384 >. Aproveite!
Existem várias linguagens de programação que dão suporte ao paradigma orientado a objetos: Java, Python, C++,
Rubi e C# são exemplos de algumas linguagens de programação orientadas a objetos populares, oferecendo suporte
à programação OO:
Exemplos de linguagens de programação orientadas a objetos
» Clique nas setas ou arraste para visualizar as imagens
É uma das linguagens mais usadas, tendo como lema “escreva uma vez, execute em
qualquer lugar”, e isso se reflete no número de plataformas em que é executada.
PYTHON
É de uso geral e usada em muitos lugares. No entanto, Python tem uma base sólida
em aprendizado de máquina e ciência de dados. É uma das linguagens preferidas para
esse novo e crescente campo.
C ++
Tem a velocidade de C, com a funcionalidade de classes e um paradigma orientado a
objetos. É uma linguagem compilada, confiável e poderosa. Na verdade, ele é usado
até mesmo para construir compiladores e interpretadores para outras linguagens.
RUBI
Foi construída para ser simples e poderosa.
C#
É li d ã d l id l Mi ft f i j t d
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3…11/20
Existem outras linguagens orientadas a objetos além das apresentadas acima, como Perl, Objective-C, Dart, Lisp,
JavaScript e PHP, que também suportam princípios orientados a objetos. É importante ressaltar que, embora sejam
poderosas, as linguagens orientadas a objetos não servem para todas as situações, por isso, vale a pena conhecer
suas vantagens e desvantagens antes de adotá-las em uma aplicação.
Puga e Rissetti (2004) indicam a linguagem Java por ser fundamentalmente orientada a objetos e por ser cada vez
mais utilizada em cursos introdutórios de técnicas de programação e também no mercado de trabalho. Dessa forma,
ela será a linguagem de programação utilizada nesta disciplina.
VAMOS PRATICAR?
Já que utilizaremos o Java para a realização de nossas estruturas de dados, seria interessante se você
pudesse baixá-lo e testá-lo no seu computador. O que acha? Para isso, siga os seguintes passos: Acesse
o site oficial do Java no seguinte endereço: < https://www.java.com/pt-
BR/download/help/download_options.html >
Escolha o seu sistema operacional. O sistema irá direcioná-lo para uma página com as instruções para
download e instalação do Java, conforme o sistema operacional selecionado. Geralmente, o Windows é o
sistema operacional mais utilizado.
Siga as instruções de instalação do software.
Ao final, realize o teste da instalação, executando um pequeno aplicativo no browser.
Atenção! Muitas vezes é necessário reiniciar (fechar e reabrir) seu navegador para ativar a instalação do
Java.
Vale ressaltar a importância de se utilizar uma IDE para auxiliar o desenvolvimento e execução de seus
códigos. Para isso, sugiro instalar uma IDE Integrated Development Environment , ou seja, um Ambiente
de Desenvolvimento Integrado. Resumidamente, trata-se de um programa que tem a função de reunir, em
um único local, tudo que um desenvolvedor precisa para trabalhar, facilitando muito sua vida,
principalmente se ele depender da integração de várias ferramentas que o IDE já traz configurada por
padrão. Para Java, existem várias IDEs que podem ser utilizadas como NetBeans ou Eclipse. No livro da
referência Java – como programar de Deitel & Deitel(2017), na seção Antes de começar, estão descritos
em detalhes os procedimentos para instalação das IDEs.
Teste seus conhecimentos
Atividade não pontuada.
É uma linguagem de programação desenvolvida pela Microsoft que foi projetada para
aprimorar os conceitos existentes em C.
https://www.java.com/pt-BR/download/help/download_options.html
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 12/20
1.2 Conceitos avançados em Orientação a Objetos
A programação orientada a objetos é um dos conceitos fundamentais na computação, que todo programador deve
conhecer. Reconhecida como uma das melhores maneiras de se escrever código limpo e legível, reduz os custos e
tempo de desenvolvimento, atendendo a características críticas existentes na construção dos novos sistemas de
informação, como tamanho, complexidade, alta confiabilidade e desempenho.
Desta forma, o desenvolvedor deve estar preparado para lidar com os desafios emergentes da programação e
explorar ao máximo os recursos disponibilizados pelas linguagens orientadas a objetos.
A seguir, serão apresentados alguns conceitos avançados relacionadas à orientação a objetos.
1.2.1 Sobrecarga
A sobrecarga, ou overload em inglês, permite a existência de vários métodos com o mesmo nome. O conceito de
sobrecarga está diretamente relacionado ao método de uma classe.   No processo de desenvolvimento de um
sistema, as classes e os métodos são mecanismos de modularização do programa, de forma a separar suas tarefas
em unidades autocontidas e disponibilizá-las para reutilização. A modularização torna o programa mais gerenciável e
evita a repetição de código, tornando-o mais fácil para depurá-lo e mantê-lo (DEITEL; DEITEL, 2017).
A sobrecarga de método é um conceito familiar de linguagens de programação orientada a objetos como Java ou C#.
Ele permite que uma classe tenha vários métodos com o mesmo nome se sua assinatura for diferente, ou seja,
desde de tenha quantidades diferentes de parâmetros ou tipos diferentes de retorno.
É importante salientar que não existe exigência de que os métodos que sofrem sobrecarga precisem ter algum tipo
de relacionamento entre si, de forma que podem implementar comportamentos totalmente independentes. No
entanto, a sobrecarga do método fornece uma notação que permite definir métodos semelhantes (mas diferentes)
que fornecem um conjunto relacionado de comportamentos (indicado pelo mesmo nome de método), mas que os
parâmetros de acesso são diferentes.
Dicas para sobrecarga de métodos
» Clique nas setas ou arraste para visualizar o conteúdo
estar limitados à realização de uma única tarefa bem definida, e o nome do método
deve expressar essa tarefa efetivamente.
PREVENÇÃO
Um método que realiza uma única tarefa é mais fácil de testar e depurar do que aquele
que realiza muitas tarefas
NOMENCLATURA DE MÉTODOS
Se não puder escolher um nome conciso que expresse a tarefa de um método, seu
método talvez tente realizar tarefas em demasia. Divida esse método em vários
menores.
RETORNO DE MÉTODOS
Mét d d t á i l l t d d i
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 13/20
Fonte: DEITEL, DEITEL, 2017.
1.2.1 Composição
O conceito de composição é muito importante na orientação a objetos e está relacionado com a capacidade de uma
classe referenciar um ou mais objetos de outras classes em variáveis de instância. Isso permite modelar uma
associação do tipo tem - um entre objetos. Deitel e Deitel (2017, p. 260) apresentam a seguinte definição simplificada
de composição: “Uma classe pode ter referências a objetos de outras classes como membros. Isso é chamado
composição e, às vezes, é referido como um relacionamento tem um”. No Diagrama 3 é possível observar um
exemplo de composição entre classes.
Diagrama 3 – Representação gráfica da composição
Fonte: Elaborado pela autora, 2020.
#PraCegoVer : A figura representa um modelo de diagrama de classes da UML com
composição. São apresentados quatro retângulos divididos em três partes cada um: na parte
superior, o nome da classe, na parte central, os tipos de dados de cada classe e, na parte
inferior, as operações ou métodos da classe. Cada retângulo representa uma classe do
diagrama. São elas: Mesa, Consumo, ItemDeConsumo e ItemdeCardapio. As classes Mesa e
Consumo estão interligadas por meio de uma reta, que na UML, representa um
Métodos podem retornar no máximo um valor, mas o valor retornado poderia ser uma
referência a um objeto que contém muitos valores.
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 14/20
A classe Consumo tem um atributo que é do tipo da classe ItemDeConsumo , que a compõe. Esse tipo de
relacionamento é bem comum no mundo real, tratando-se de exemplos de composição.   Ao usar o conceito de
composição, é possível reutilizar um código existente, projetar APIs simples e alterar a implementação de uma classe
sem precisar fazer nenhum tipo de adaptação em outros elementos.
1.2.3 Herança e classes abstratas
O conceito de herança foi visto anteriormente, quando os quatro pilares da orientação a objetos foram apresentados,
e tem relação com o conceito de classes abstratas , já que essas dependem de uma hierarquia para existir.Na
criação de uma nova classe, pode-se designar que esta classe (subclasse) utilize elementos de uma classe existente
(classe-mãe, classe-pai ou superclasse). Essa subclasse ainda pode adicionar seus próprios campos e métodos,
sendo mais específicaque sua superclasse, representando um grupo especializado de objetos.
A subclasse apresenta os comportamentos da superclasse e pode modificá-los para que funcionem de forma
adequada para ela. No Diagrama 2, visto anteriormente, é possível observar os relacionamentos de herança que
formam estruturas hierárquicas: uma superclasse (Pessoa) existe em um relacionamento hierárquico com suas
subclasses (Aluno e Funcionário).
Cada seta na hierarquia representa um relacionamento “ é um (a) ” (DEITEL; DEITEL, 2017). Isso significa dizer que
o elemento abaixo da hierarquia herda as características do elemento acima da hierarquia. Desta forma, a classe
Aluno é uma Pessoa; ou a classe Professor é um Funcionario que é uma Pessoa. A principal vantagem de se utilizar
a herança é aproveitar sua capacidade de definição de novos atributos e métodos para as subclasses, o que permite
a criação de uma estrutura hierárquica de classes cada vez mais especializada.
Classes abstratas refere-se a classes que contêm um ou mais métodos abstratos. Um método abstrato é um
método declarado, mas não contém implementação. As classes abstratas não podem ser instanciadas e requerem
subclasses para fornecer implementações para os métodos abstratos. No exemplo apresentado do Diagrama 2, a
classe Pessoa é uma classe abstrata.
Veja este exemplo: imagine que se esteja modelando o comportamento de animais, criando uma hierarquia de
classes que se inicia com uma classe base chamada Animal. Os animais são capazes de fazer várias coisas
diferentes, como voar, cavar e andar, mas existem algumas operações comuns, como comer e dormir. Algumas
operações comuns são realizadas por todos os animais, mas também de uma maneira diferente. Quando uma
operação é realizada de uma forma diferente, esta pode ser considerada uma boa candidata para ser um método
abstrato (forçando as subclasses a fornecer uma implementação personalizada).
Deitel e Deitel (p. 316, 2017) descreve que o “propósito de uma classe abstrata é fornecer uma superclasse
apropriada a partir da qual outras classes podem herdar e assim compartilhar um design comum. As classes que
podem ser utilizadas para instanciar objetos são chamadas classes concretas e fornecem implementações para
cada método declarado por elas.
É importante lembrar que nem todas as hierarquias de classe contêm classes abstratas e que uma hierarquia pode
ser constituída por vários níveis de classes abstratas. Este artifício é utilizado pelos desenvolvedores para reduzir o
nível de dependência de código. A criação de uma classe abstrata se dá pela utilização da palavra-chave abstract ,
relacionamento de associação. A classe consumo está interligada à classe ItemDeConsumo
por meio de um relacionamento de composição, pois esta está contida como um atributo na
classe Consumo. Cada uma dessas classes contém seus atributos e métodos declarados.
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 15/20
quando se utiliza a linguagem Java. Uma classe abstrata normalmente contém um ou mais métodos abstratos e
estes não contêm implementações.
1.2.4 Interface
Uma interface é uma descrição das ações que um objeto pode realizar. Por exemplo: quando se aciona um
interruptor de luz, a luz acende, não importa como, apenas acende. Na orientação a objetos, uma interface é uma
descrição de todas as funções que um objeto deve ter para ser um objeto que pertence a uma determinada classe.
Novamente, como exemplo, qualquer coisa que tem o comportamento de uma luz deve ter um método ligar () e um
método desligar () . Deitel e Deitel (p. 10, 2017), apresentam as interfaces da seguinte forma:
O objetivo das interfaces é permitir que o computador imponha essas propriedades e saiba que um objeto do TIPO T
(seja qual for a interface) deve ter funções chamadas X, Y, Z, etc. As interfaces são utilizadas para que se possa
obter abstração total, fornecendo comunicação. É por meio da interface que se pode especificar os métodos de
forma desejada e os campos de um determinado tipo.
» Clique nas abas para saber mais sobre o assunto
Fonte: DEITEL, DEITEL, 2017.
Teste seus conhecimentos
Atividade não pontuada.
1.3 Exercícios de Orientação a Objetos
Para fixar o conteúdo, será apresentado um exemplo, na linguagem Java, de como seria a implementação do
princípio da herança, que permite a criação de novas classes a partir de outras previamente existentes, tornando as
classes mais específicas. Uma subclasse herda métodos e atributos de sua superclasse; apesar disso, pode
escrevê-los novamente para uma forma mais específica de representar o comportamento do método herdado,
Uma classe implementa zero ou mais interfaces – cada uma das quais pode ter um ou mais
métodos –, assim como um carro implementa interfaces separadas para as funções básicas
de dirigir, controlar o rádio, controlar os sistemas de aquecimento, ar-condicionado e afins.
Da mesma forma que os fabricantes de automóveis implementam os recursos de forma
distinta, classes podem implementar métodos de uma interface de maneira diferente. Por
exemplo, um sistema de software pode incluir uma interface de “backup” que ofereça os
métodos save e restore . As classes podem implementar esses métodos de modo diferente,
dependendo dos tipos de formato em que é feito o backup, como programas, textos, áudios,
vídeos etc., além dos tipos de dispositivo em que esses itens serão armazenados.
 
Sobrecarga Composição Herança Classes abstratas Interfaces
É uma capacidade que permite a uma classe conter referências a objetos de outras classes
como membros.
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 16/20
implementando o princípio do polimorfismo.
Observe o Diagrama 4. Neste exemplo, será definida uma classe abstrata Funcionário , da qual serão criadas
classes-filha: Atendente e Gerente . Essas classes irão herdar atributos e métodos da classe Funcionário, e
especializar a classe Funcionário no que for necessário através da definição de novos métodos e atributos. O
objetivo é demonstrar como os principais princípios da orientação a objetos podem ser implementados com a
linguagem Java. Este é o modelo da classe abstrata Funcionario : tem os atributos nome, CPF, salário base e os
métodos calculam salário e calculam bonificação. Todo funcionário tem um bônus de 10% no seu salário no final do
ano, que pode variar de acordo com sua função dentro da empresa. Por ser uma classe abstrata, nunca serão
criados objetos a partir dela. Em Java, a palavra abstract antes do nome da classe realiza esta função.
Diagrama 4 – Representação gráfica da composição
Fonte: Elaborado pela autora, 2020.
#PraCegoVer : No diagrama há um retângulo superior, sombreado de preto e com três
repartições. A primeira designa a classe Funcionário, a segunda repartição exibe os dados da
classe e a terceira exibe os métodos ou as operações a serem realizadas. Uma seta interliga a
classe funcionário a outros dois retângulos, na parte inferior do diagrama. Do lado esquerdo,
um retângulo com bordas pretas, designando a classe Atendente. Nele, há três repartições: a
primeira com o título Atendente, a segunda com o atributo e a terceira repartição com os
métodos. Ao lado direito há outro retângulo, também sombreado de preto e com três
repartições. A primeira designa a classe Gerente, a segunda está em branco e a terceira exibe
o método.
Após a declaração de seus atributos como protected , garantindo que somente classes-filhas ou classes do mesmo
pacote possam acessar seus atributos, é possível perceber a declaração de métodos get e set para cada variável
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3…17/20
dentro da classe. Essa estrutura é uma boa prática de programação, garantindo o encapsulamento por meio da
declaração de métodos que são responsáveis pela manutenção de atributos da própria classe.
public abstract class Funcionario {
protected String nome;
protected String cpf;
protected double salarioBase;
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return this.cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public double getSalarioBase() {
return this.salarioBase;
}
public void setSalarioBase(double salarioBase) {
this.salarioBase = salarioBase;
}
public double calculaSalario() {
return this.salarioBase;
}
public double calculaBonificacao() {
return this.calculaSalario() * 0.10;
}
}
Agora imagine um atendente da empresa, que é um funcionário. Como tal, ele herda os atributos e métodos da
classe Funcionário. Ele tem uma carga horária diferenciada e seu salário é calculado baseado nas horas
trabalhadas. Na linguagem Java, a herança se dá pelo termo extends . Neste exemplo, a classe Atendente
sobrescreve o método calculaSalario() da classe Funcionário com o objetivo de redefinir seu comportamento, ou
seja, implementando o princípio do polimorfismo. Desta forma, podemos definir a classe Atendente da seguinte
forma:
public class Atendente extends Funcionario {
private int horasDeTrabalho;
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 18/20
public int getHorasDeTrabalho() {
return this.horasDeTrabalho;
}
public void setHorasDeTrabalho(int horasDeTrabalho) {
this.horasDeTrabalho = horasDeTrabalho;
}
// essa anotação @Override é puramente informativa, a IDE que adiciona para ficar fácil de saber quais métodos
// estão sobrescrevendo métodos de classe pai, se apagar continua funcionando
@Override
public double calculaSalario() {
return this.salarioBase + this.horasDeTrabalho * 5;
}
}
O Gerente também é um funcionário. Ele herda as características da superclasse e redefine o método calcular
benefício, uma vez que sua bonificação é diferenciada do demais funcionários.
public class Gerente extends Funcionario {
@Override
public double calculaBonificacao() {
return calculaSalario() * 0.25;
}
}}
Para demonstrar os resultados das classes definidas, a classe FolhaDePagamento instancia os objetos das classes
concretas Atendente e Gerente, iniciando suas variáveis nome e salario com os respectivos valores: João –>
R$1000,00, e José -> R$ 1000,00.
Ao apresentar na tela a impressão dos cálculos do salário e da bonificação de cada um desses funcionários, o
sistema irá recuperar a fórmula de cálculo de cada objeto específico, de acordo com a classe que instancia, e será
possível verificar os valores diferenciados para cada funcionário, devido às especificidades. Perceba que o mesmo
salário foi atribuído aos dois objetos para que se perceba a particularidade da implementação dos métodos de
cálculo.
public class FolhaDePagamento {
public static void main(String[] args) {
Atendente atendente = new Atendente();
atendente.setNome("João");
atendente.setSalarioBase(1000.0);
Gerente gerente = new Gerente();
gerente.setNome("José");
gerente.setSalarioBase(1000.0);
imprimirLinhaFolhaPagamento(atendente);
imprimirLinhaFolhaPagamento(gerente);
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 19/20
}
private static void imprimirLinhaFolhaPagamento(Funcionario funcionario) {
System.out.println(funcionario.getNome() + " -> " + funcionario.calculaSalario());
System.out.println("Bonificacao: " + funcionario.calculaBonificacao());
System.out.print("-------------------------------------------------------------\n");
}
} }
}
Síntese
Neste capítulo, foram apresentados os principais conceitos relacionados à orientação a objetos. Primeiramente,
apresentamos os conceitos de classes e objetos e enfatizamos sua importância como elementos fundamentais deste
paradigma de desenvolvimento de software.
Na sequência, discutiu-se a estrutura das linguagens orientadas a objetos, que são baseadas em quatro pilares:
abstração, encapsulamento, herança e polimorfismo, apresentando, esquematicamente, alguns exemplos sobre cada
um deles. Dentro deste tópico, ainda, falamos das principais linguagens de programação que dão suporte a OO, e
destacamos Java como a linguagem que será adotada nos exemplos das estruturas de dados que serão estudadas.
Para finalizar, estudamos alguns conceitos mais avançados da orientação a objetos como sobrecarga, composição,
herança, classes abstratas e interface, fazendo algumas atividades para fixar os conceitos estudados.
SAIBA MAIS
Título: Os 4 pilares da Programação Orientada a Objetos
Autor(a) ou autores: Henrique Machado Gasparotto
Ano: 2014
Comentário: Leia este artigo pois ele complementa, de forma didática, o conteúdo discutido na
disciplina.
Onde encontrar? Este artigo pode ser encontrado no site da DevMedia, no link <
https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264 >.
Título: Java e Orientação a Objetos
Autor(a) ou autores: CaelumAno: 2020
Comentário: Este é um material completo sobre a linguagem de programação Java. Além de ser um
https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264
30/04/2024 20:56 Unidade 1 - Estrutura de dados com orientação a objetos
https://student.ulife.com.br/ContentPlayer/Index?lc=Zta6AltVcoboR2f%2bGLwWiQ%3d%3d&l=T9Fe7TRnjpuWhEF9oxYt0w%3… 20/20
conteúdo de altíssima qualidade, disponibilizado gratuitamente por uma das melhores escolas de
tecnologia do Brasil, seu conteúdo é atualizado constantemente.
Onde encontrar? Este material pode ser encontrado no site da Caelum, no link: <
https://www.caelum.com.br/apostila-java-orientacao-objetos >.
Título: “Curso POO Teoria #06a - Pilares da POO: Encapsulamento”
Autor(a) ou autores: Gustavo Guanabar.Ano: 2016
Comentário: Esta é uma aula ministrada por Gustavo Guanabara que explica o conceito de
encapsulamento de forma bem didática, Essa aula 6 faz parte de uma série de videoaulas que
compõem o curso “POO Teoria”.
Onde encontrar? Este material pode ser encontrado no canal do YouTube da Curso em Vídeo, no
link < https://youtu.be/1wYRGFXpVlg >.
Referências bibliográficas
BARNES, D. J.; KOLLING, M. Programação Orientada a Objetos com Java : uma introdução prática usando o
Blue J. São Paulo: Person, 2004.
DEITEL, H. M., DEITEL, P. J. Java como programar . São Paulo: Person, 2017.
LEITE, T. Orientação a Objetos . Aprenda seus conceitos e suas aplicabilidades de forma efetiva. São Paulo:
Editora Casa do Código, 2016.
PUGA, S.; RISSETTI, G. Lógica de Programação e Estrutura de Dados – com aplicações em Java. São Paulo:
Person, 2004.
MENDES, A. Introdução à programação orientada a objetos com C++ . Rio de Janeiro: Elsevier Brasil, 2010.
PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software -8ª Edição. McGraw Hill Brasil, 2016.
SILVA, A.; VIDEIRA, C. UML, Metodologias e Ferramentas CASE . V. 2. Porto: Centro Atlântico, 2001.
WU, C. T. An Introduction to object-oriented programming with Java TM . New York: McGraw-Hill Incorporated,
2010.
https://www.caelum.com.br/apostila-java-orientacao-objetos
https://youtu.be/1wYRGFXpVlg

Mais conteúdos dessa disciplina