Conceitos Orientação a Objetos
Por: Thamyla Lima • 28/4/2017 • Pesquisas Acadêmicas • 1.299 Palavras (6 Páginas) • 380 Visualizações
- Defina e exemplifique os objetos e as classes.
Uma classe é uma estrutura que abstrai um conjunto de objetos com características similares. Ela define o comportamento de seus objetos através de seus métodos e os estados possíveis destes objetos através de seus atributos.
Já um objeto é uma instância de uma classe. O objeto é capaz de armazenar estados através de seus atributos, que representam as características do objeto, e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.
Para exemplificar os objetos e classes é possível utilizar o exemplo de um sistema de uma empresa. Nesse sistema estão cadastrados todos os empregados da empresa. Cada empregado possui um nome, CPF, endereço, telefone, salário, horas extras.
- O que é encapsulamento e quais os seus benefícios? Exemplifique.
Encapsulamento é uma técnica que permite restringir o acesso a alguns componentes do objeto. Permite também que os detalhes internos do funcionamento dos métodos de uma classe permaneçam ocultos para os objetos. A partir do encapsulamento, do ponto de vista do objeto, não é necessário o conhecimento a respeito da implementação interna da classe, já que isso passa a ser responsabilidade dos métodos internos da classe.
Assim, o encapsulamento organiza os dados, agrupando-os (encapsulando-os) em objetos (classes), reduzindo as colisões de nomes de variáveis e reunindo métodos relacionados às suas propriedades. Um benefício é ajudar a manter um programa com centenas ou milhares de linhas de código mais legível e fácil de trabalhar e manter.
No exemplo do sistema de empregados da empresa, supondo que existem duas classes, uma é a classe Gerente e a outra é a classe Funcionário, cada uma possui os atributos da classe Empregado. A partir do encapsulamento é possível acessar os nomes dos empregados sem conflito com o nome das variáveis. Basta perguntar: gerente.nome e funcionario.nome.
- Qual a diferença entre variáveis de instância e variáveis de classe?
A variável de instância pertence somente ao objeto criado. Por exemplo ao criar uma classe Quadrado e criar uma variável de instância chamada cor e atribuir a cor azul a ela, todos os seus objetos serão azul, porém se a cor de um dos objetos for alterada para verde, os demais objetos dessa classe continuarão com a cor azul. Já na variável de classe, se um objeto altera a cor para verde, todos os objetos também serão verdes, isso porque a variável é da classe e não da instância. Para criar uma variável basta adicionar a palavra static na declaração.
- Qual a diferença entre métodos de instância e métodos de classe?
Nos métodos de instância é necessário criar um objeto de uma determinada classe para utilizar seus métodos. Já em um método de classe, é possível chamar o método sem criar um objeto.
- Qual a diferença entre variáveis locais e de instância?
Variável local pertence a um método individual, e só pode ser acessada no método em que for declarada. Já a variável de instância pertence a um objeto, podendo ser utilizada em todos os métodos de sua classe.
- O que é herança em orientação a objetos? Exemplifique.
A herança permite que as classes compartilhem seus atributos, métodos e outros membros da classe entre si. Assim, a herança tem dois tipos principais de classe, a classe base que concede características a uma outra classe e a classe derivada, que herda as características da classe base.
Voltando ao exemplo do sistema para a empresa. Caso a empresa possua vários cargos como senior, pleno e junior. Seria possível criar três classes (uma para cada cargo) e fazê-las herdarem da classe Empregado. E sobrescrever o método de calcular o salário do empregado em cada uma, adaptando para o valor correspondente ao cargo.
- Quais os dois problemas citados em sala de aula que a herança tenta resolver?
Reúso de código e especialização de métodos. O primeira simplifica na criação e manutenção do programa e o segundo dá certa autonomia às classes derivadas permitindo que quando houver uma mudança em uma, as outras que também são classes derivadas não tenham alteração.
- Qual a diferença entre sobrescrever e sobrecarregar um método?
Sobrescrever é um método, é reescrevê-lo, mantendo seus parâmetros e o tipo do seu retorno. Sobrecarregar um método permite a existência de vários métodos com o mesmo nome, onde suas assinaturas são levemente diferentes, mudando tipo de parâmetros e tipo do retorno, por exemplo. Com a sobrecarga dos métodos, é possível criar um método soma que possua diferentes parâmetros. Um pode ter como entrada dois doubles, o outro pode ter como entrada dois inteiros. Assim, quando o método soma é chamado, ele poderá ter como parâmetros inteiros ou doubles.
- Quais são os modificadores que definem o acesso de controles e quais são seus efeitos?
Private | Protected | Public | |
Mesma classe | sim | sim | sim |
Mesmo pacote | não | sim | sim |
Pacotes diferentes (subclasses) | não | sim | sim |
Pacotes diferentes (sem subclasses) | não | não | sim |
- Qual a diferença entre classes abstratas e interfaces?
Uma interfaces não é considerada como classe e sim como uma entidade. Todos os seus métodos são abstratos e não possuem implementação, ou seja, há apenas a definição dos métodos sem o corpo. Na interface são especificados os atributos, métodos e funções que as classe que implementam essa interface são obrigadas a implementar.
As classes abstratas devem conter pelo menos um método abstrato. É usada apenas para ser herdada, sendo que não há como criar instâncias dela. As suas subclasses devem conter as mesmas hierarquias e/ou padrões.
...