Lista 1 Poo

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 6

Bruno Andrade Schiavone RA:2142546

1) Por que falamos que Java é totalmente aderente às técnicas de Orientação a


Objetos?

Java permite a implementação dos conceitos de abstração, atributos, classes, objetos,

Etc, por isso dizemos que a linguagem é totalmente aderente às técnicas de Orientação a
Objetos.

2) Explique o que é e como se utiliza o processo de “abstração”.

É utilizada para a definição de entidades do mundo real. Sendo onde são criadas as classes.
Essas entidades são consideradas tudo que é real, tendo como consideração as suas
características e ações.

3) Quais são os artefatos produzidos na programação orientada a objetos?

Classes, atributos, métodos e objetos.

4) O que é um “tipo primitivo” de dados?

Um tipo primitivo (também conhecido por nativo ou básico) é fornecido por uma
linguagem de programação como um bloco de construção básico.

5) O que é um “tipo abstrato” de dados?

um tipo abstrato de dados (TAD) pode ser visto como um modelo matemático que
encapsula um modelo de dados e um conjunto de procedimentos que atuam com
exclusividade sobre os dados encapsulados.

6) Explique o que é o “Garbage Collector”. Como este recurso pode dinamizar o


funcionamento do sistema?

Trata-se de um Coletor de Lixo que “limpa” da memória principal os objetos que não estão
sendo mais usados. Isso acontece assim que eles perdem a referência, liberando espaço na
memoria e impedindo que ocorra o esgotamento da mesma.

7)_ Considerando o modo Shell (linhas de comando) do sistema operacional Windows,


como se faz para:

7.a) Compilar um código fonte Java;

No terminal deve-se digitar javac nomedoarquivo.java

7.b) Fazer com que a J.V.M. (Máquina Virtual Java) execute uma aplicação Java

No terminal deve-se digitar java nomedoarquivo que foi compilado anteriormente.

8) O que é o “ByteCode”?

O código escrito em linguagem java é compilado em uma linguagem intermediaria de


código, o Bytecode, que é interpretada pelas máquinas virtuais java.
9) Explique o que é a característica “Portabilidade”. Como isto é possível com aplicações
Java? Para esta resposta relacione 4 “personagens” deste cenário: o código fonte
(arquivo .java), o byteCode (arquivo .class), o Sistema Operacional e a JVM (Java Virtual
Machine).

É uma característica que a linguagem java possui onde é possível executar o mesmo código
em diferentes sistemas, através do bytecode que obtido atrasves do código fonte, que
quando compildo vira o bytecode, que ira ser interpretado pela máquina virtual java do
sistema que esta sendo utilizado.

10) Justifique a afirmação que diz que “a segurança em Java se dá em dois níveis:
proteção de hardware e proteção de software”.

Proteção do Hardware (proteção da RAM): Pelo fato de Java não implementar “ponteiros”,
garante a integridade no gerenciamento da memória principal. O que evita que
inadvertidamente o “programador” aloque um espaço que já está sendo utilizado por
outra aplicação.

Proteção ao software: Grande quantidade de API´s (Interfaces para Programação de


Aplicações). Estas API´s, fornecidas na “bibliotecas” nativas de Java, durante sua instalação
foram testadas inúmeras vezes, reduzindo assim a margem de erros durante a construção
de uma aplicação.

11) Explique como aplicamos o conceito de “Modularidade” em Java. Na resposta desta


questão deve-se tratar dos conceitos sobre “Acoplagem” e “Coesão”.

Na programação orientada a objeto os dados e procedimentos que manipulam estes


dados são definidos numa unidade única, o objeto, o que permite a modularidade,
podendo assim ser usado em vários momentos durante o código de forma independente.

11.a) Como esta característica pode ajudar na questão da “Manutenibilidade”?

Devido a modularidade, fica mais fácil de fazer manutenção em um modulo especifico,


uma vez que são independentes pode-se fazer as alterações necessárias sem afetar o
restante do projeto.

12) Para servem os objetos:

12.a) this

O objeto this faz uma referência a um membro (atributo ou método) da classe

12.b) super

A palavra super representa uma chamada de método ou acesso a um atributo da


superclasse, por isso tem esse nome.

13)_ Usando Java, dê um exemplo que contemple as respostas das questões 12.a e 12.b.

this .rg =rg;

super.metodo();
14) Dentre os conceitos de sustenta a Orientação a Objetos, explique:
14.a) Encapsulamento:
14.a.i) Seus níveis (explique cada um dos três níveis);
PÚBLICO (public): todos têm acesso. Um atributo pode ter seu valor
alterado a partir de qualquer outro código, mesmo sendo este de uma
classe qualquer.
PROTEGIDO (protected): em Java tem acesso quem está no mesmo
pacote ou classes que herdem a classe que contenha atributo ou
método protegido.
PRIVADO (private): Restrição total fora da classe. Só têm acesso
membros da própria classe.
14.a.ii) Como o Encapsulamento pode nos ajudar na padronização, segurança e
“manutenibilidade” no desenvolvimento de sistemas;

mantendo os serviços da classe, podemos alterar sua estrutura interna da classe


(refinamentos de código, por exemplo) sem que outras classes (códigos) que
dependam dela tenham que ser alteradas.

14.b)_ Herança:

14.b.i)_ Explique os conceitos que “Generalização” e “Especialização”;

Generalização: Definição de uma entidade que é um superconjunto de uma outra


entidade.

Especialização: Definição de uma entidade que é um subconjunto de uma outra


entidade

14.b.ii)_ Como o mecanismo de Herança pode nos ajudar na padronização,

segurança e “manutenibilidade” no desenvolvimento de sistemas;

Como as classes podem herdar características de outras classes isso facilita a


padronizar um programa de modo que ele fica mais fácil de ser lido e mantido e
seguro, já que vão ter classes que só podem ser acessadas através de outras por conta
da herança.

14.b.iii)_ Explique o conceito de “Reusabilidade”. Como este é aplicado no


mecanismo de Herança e, ainda, como esta possibilidade nos ajuda no dinamismo da
codificação.

O conceito de reusabilidade reside na capacidade de se utilizar a mesma classes


diversas vezes de forma independente, isso facilita na codificação já que se pode
chamar a classe varias vezes.
14.c)_ Polimorfismo:

14.c.i)_ Sobrecarga;

A sobrecarga de métodos (overload) é um conceito do polimorfismo que consiste


basicamente em criar variações de um mesmo método, ou seja, a criação de dois ou
mais métodos com nomes totalmente iguais em uma classe. A Sobrecarga permite que
utilizemos o mesmo nome em mais de um método contanto que suas listas de
argumentos sejam diferentes para que seja feita a separação dos mesmos.

14.c.ii)_ Sobrescrita;
A sobrescrita (ou override) está diretamente relacionada à orientação a objetos, mais
especificamente com a herança. Com a sobrescrita, conseguimos especializar os
métodos herdados das superclasses, alterando o seu comportamento nas subclasses
por um mais específico.

14.c.iii)_ Coerção.

forçamos um objeto a “vestir” uma roupagem específica. Isto é muito comum em


casos em que precisamos definir um modelo genérico que seja, depois, redefinido/
especializado por outras classes de objetos. Para que isso seja possível, o
template/padrão é construído utilizando apenas tipos suficientemente abstratos (a
partir de interfaces ou ainda classes abstratas), do qual se derivam/especializam
diversos tipos de objetos de acordo com a necessidade.

15)_ Construa um programa para exemplificar as respostas das questões 14a, 14b e 14c.
abstract class Mamífero {

public abstract double obterCotaDiariaDeLeite();}

class Elefante extends Mamífero {

public double obterCotaDiariaDeLeite(){

return 20.0;}}

class Rato extends Mamifero {

public double obterCotaDiariaDeLeite() {

return 0.5;}}

class Aplicativo {

public static void main(String args[]){

System.out.println("Polimorfismo\n");

Mamifero mamifero1 = new Elefante();

System.out.println("Cota diaria de leite do elefante: " + mamifero1.obterCotaDiariaDeLeite());

Mamifero mamifero2 = new Rato();

System.out.println("Cota diaria de leite do rato: " + mamifero2.obterCotaDiariaDeLeite()); }}


16)_ Explique o que são trocas de mensagens? Como isso acontece?

Esta troca de mensagens se dá pela declaração de objetos dos tipos de classes e pela
invocação dos métodos através dos objetos declarados.

17)_ O que é um “método construtor”? Qual sua importância? Faça um código que
demonstre sua explicação

Construtores são métodos especiais chamados pelo sistema no momento da criação de


um objeto. Eles não possuem valor de retorno, porque você não pode chamar um
construtor para um objeto, você só usa o construtor no momento da inicialização do
objeto.

public class MinhaClasse {

public MinhaClasse() { //esse é o metodo construtor

System.out.println("Oi!"); }}

public class Teste {

public static void main(String args[]) {

MinhaClasse Obj1 = new MinhaClasse();}}

18)_ Explique o que são como e quando utilizamos:

18.a) Classe abstrata;

As classes abstratas são as que não permitem realizar qualquer tipo de instância. São
classes feitas especialmente para serem modelos para suas classes derivadas

18.b) Método abstrato;

Em orientação a objetos, método abstrato é o método de uma classe abstrata que não
possui implementação. Na classe abstrata, é definido o método abstrato com palavra
reservada abstract

18.c)_ Classe final;

Quando é aplicado na classe, não permite estende-la, nos métodos impede que o mesmo
seja sobrescrito (overriding) na subclasse, e nos valores de variáveis não pode ser alterado
depois que já tenha sido atribuído um valor.

18.d)_ Atributo final;

Um atributo final de uma classe pode ter seu valor atribuído uma única vez, seja na própria
declaração ou no construto

18.e)_ Método final

O método serve para que quando uma subclasse a chame da mesma maneira que foi
criada, sem que haja mudanças em seu comportamento. Já quando isso acontece com
uma classe ela não pode ser herdada
19)_ Dentro da tecnologia Java, explique o que é a estrutura de dados “Interface”.
Quando a utilizamos?

Assim como uma classe também trata-se de um tipo de um tipo abstrato

de dados:

- Porém todos os métodos que ela contiver deverão ser construídos nas

classes que implementarem esta Interface, logo, em sua forma de uso,

assemelha-se aos métodos abstratos;

- Caso a Interface tenha algum atributo, este será do tipo constante, isto é, não

poderá ter seu valor alterado. Se comportarão como constantes (atributos“finais”);

- É utilizada para suprir a necessidade herança múltipla, já que não é possível

implementar esta forma de herança em Java.

Você também pode gostar