Buscar

Atividade supervisionada java

Prévia do material em texto

Atividade supervisionada
1. Explique os tipos de polimorfismo com exemplos.
Existem quatro tipos de polimorfismo que a linguagem pode ter os chamados universais que são os de inclusão e o paramétrico e os chamados Ad-Hoc que são os de sobrecarga e coerção. 
Polimorfismo Universal Inclusão
Modela herança e subtipos. Permite a um objeto pertencer a várias classes simultaneamente, criando uma hierarquia de herança. Numa subclasse, um objeto pode ter um comportamento modificado com relação à classe original. Assim só ocorre em linguagens que permitem subtipo e herança. Uma instância de uma subclasse pode ser manipulada pelas mesmas funções que manipulam instâncias da superclasse. Em C# é suportado através de herança.
Exemplo:
public class Animal { }
 
public class Elefante : Animal {}
 
Animal elefante = new Elefante();
Polimorfismo Universal Paramétrico:
Considerado o polimorfismo verdadeiro, um mesmo objeto pode ser utilizado como parâmetro em diferentes contextos sem necessidade de alterações. Uma função que exibe polimorfismo paramétrico (também chamada de função genérica) permite que o tipo do seu argumento seja determinado por um parâmetro implícito ou explícito, executando uma mesma operação, independente do tipo de argumento. Em C#, é suportado através do uso de Generics. 
Exemplo:
List<Object> lstObject = new List<Object>();
Polimorfismo Ad-hoc Sobrecarga:
É suportado através da sobrecarga de métodos, ele consiste em utilizar o mesmo nome de um método com assinaturas diferentes. Permite que um mesmo nome denote diversas funções, de acordo com o contexto. Em C# é suportado através da sobrecarga de métodos.
Exemplo:
public class Capim { }
public class Racao { }
 
public class Elefante
{
 public void Comer(Capim fresco) { }
 public void Comer(Racao fresca) { }
}
Unicarioca
2017.1
Polimorfismo Ad-Hoc Coerção:
É suportado através da sobrecarga de operadores, ele ocorre quando se converte um elemento de um tipo, no tipo apropriado para o método. Permite que um argumento seja convertido para o tipo esperado por uma função, evitando assim um erro de tipo. É uma operação semântica que reduz o tamanho do código. Em C# é suportado através da sobrecarga de operadores.
Exemplo:
public class Elefante
{
 private Int32 _peso;
 
 public Int32 Peso
 {
 get { return this._peso; }
 set { this._peso = value; }
 }
 
 public Elefante() { }
 public Elefante(Int32 Peso)
 {
 this._peso = Peso;
 }
 
 public static Elefante operator ++(Elefante e)
 {
 return new Elefante(e.Peso + 1);
 }
 
}
 
class Program
{
 static void Main(string[] args)
 {
 Elefante e = new Elefante(10);
 System.Console.WriteLine(e.Peso.ToString());
 e++;
 System.Console.WriteLine(e.Peso.ToString());
 System.Console.ReadKey();
 
 // @OUTPUT:
 // 10
 // 11
 }
}
 
Unicarioca
2017.1
2. Relacione o diagrama de classe da UML com os conceitos de encapsulamento, de herança e de polimorfismo.
Na UML abaixo temos uma superclasse Mamífero e as subclasses Cachorro e Homem que herdam de Mamífero ou seja cachorro e homem são mamíferos. As características definidas na classe Mamífero estarão presentes nas classes que herdam dela. Todos os Mamíferos terão Mamas e Pelos. Esse é o exemplo de Herança. 
Na classe Homem contém uma definição do atributo Pelos. Pois o Homem tem pelos diferentes dos outros mamíferos.
Podemos, portanto redefinir na subclasse um atributo que já estava presente na superclasse, dando a ele características diferentes. Este é o exemplo de Polimorfismo, pois o mesmo método ou atributo pode ter funcionamento diferente em classes diferentes, mesmo que uma herde da outra.
Nas classes Homem e Cachorro, classes encapsulam os dados relacionados a cada objeto de forma que possamos acessar cada um deles sem conflito, por estarem cada um em seu domínio. Ou seja, para saber o nome de um homem, podemos perguntar por Homem.nome e, da mesma forma, para saber o nome de um cachorro, podemos perguntar por Cachorro.nome. Os dois atributos têm o mesmo nome, mas cada um tem o seu próprio domínio, assim como peso e corre. Este é exemplo de encapsulamento.
Unicarioca
2017.1
3. Explique e diferencie com exemplos os conceitos de herança e de polimorfismo.
Herança é um mecanismo que ajuda definir relações de subtipo e reusar código. Herança possibilita que os desenvolvedores maximizem o uso dos métodos (comportamento) e dos dados (estrutura) dos objetos existentes. Pode-se entender herança, sob a ótica de linguagem de programação orientada a objetos, como sendo um mecanismo para construir classes a partir de classes existentes. O mecanismo de herança pode ser classificado de três maneiras independentes: 
Estático ou Dinâmico
Implícito ou Explícito
Por Objeto ou Por Grupo
A maioria das linguagens que utilizam o paradigma de orientação a objetos são: 
Estáticas (a herança é estabelecida em tempo de compilação);
Implícitas (o comportamento de um objeto depende da sua classe, que não pode ser alterada). 
Por grupo (as características de herança são especificadas para uma classe, não para objetos específicos).
Existem dois tipos de herança por grupo:
	Simples: quando há uma relação de hierarquia de uma ou mais classes com apenas outra classe. Ou seja,
uma ou mais classes (subclasses) herdam atributos ou operações de uma única classe (superclasse).
Múltipla: quando há uma relação de hierarquia de uma classe com duas ou mais classes. Ou seja, uma classe (subclasse) herda atributos ou operações de duas ou mais classes (superclasses).
A herança múltipla pode impactar em uma das características de orientação a objetos e encapsulamento, e pode introduzir complexidade nas linguagens orientadas a objetos. No mundo real, existem situações onde uma classe pode derivar de duas ou mais classes, com o uso da herança múltipla evita-se redundância e repetição de código, tornando mais difícil semanticamente entender o relacionamento entre elas.
Unicarioca
2017.1
Por outro lado, a herança múltipla introduz complexidade e ambiguidade que não são desejáveis. A maior dificuldade ocorre quando as superclasses definem os mesmos métodos, fazendo com que se tenha uma maneira de decidir qual método deve ser herdado. Essa decisão pode ser tomada na implementação ou fazendo com que os métodos das superclasses tenham assinatura (corresponde ao nome do método e aos tipos de cada parâmetro) distinta para que todos os métodos sejam herdados sem conflito ou, ainda, redefinindo na subclasse os métodos que estão conflitando.
Exemplo de herança simples e herança múltipla no mesmo diagrama de classes, mostrando que é possível ter os dois tipos de herança.
 
Polimorfismo é a habilidade de diferentes objetos receberem a mesma mensagem e comportar-se de maneira diferente. Polimorfismo implica em criar uma interface pela qual serão recebidas mensagens determinando o comportamento do objeto. Polimorfismo também suporta passagem de tipos diferentes de objetos como parâmetro nas mensagens enviadas a outros objetos.
	Operação
	 
	 
Imprimir Arquivo
	Arquivo texto
Arquivo de imagem
Arquivo binário
Unicarioca
2017.1
4. Explique e dê um exemplo do padrão de desenvolvimento MVC (Model-View_Control).
MVC é um padrão de arquitetura de software que separa a informação (e as suas regras de negócio) da interface com a qual o usuário interage.
É uma forma de estruturar seu projeto/aplicação de forma que a interface de interação (view) esteja separada do controle da informação em si (models), separação essa que é intermediada por uma outra camada controladora (controllers).
Model (ou modelo)
O model é a camada que representa os seus dados, provendo meios de acesso (leitura e escrita) à esses dados.
A regra é simples: tudo que diz respeito à escrita,validação e leitura dos dados está dentro da camada model, não necessariamente dentro do model em si, mas dentro da camada model.
Exemplo de Model
public class Pessoa {
 private String nome;
 public String getNome() {
 return nome;
 }
 
 public void setNome(String nome) {
 this.nome = nome;
 }
}
import java.sql.Connection;
public class PessoaDAO {
 Connection conn = null;
 public void salvar (Pessoa pessoa) throws Exception{ 
 }
}
Controller (ou controlador)
No controller você tem métodos públicos que são chamados de actions, cada action é responsável por uma “página” do seu site ou sistema. É o controller quem decide:
Qual model usar;
Quais pedidos fazer pro model;
Qual combinação de views será usada para exibir os dados retornados pelo model.
O controller não busca os dados (responsabilidade do model) e nem é ele quem exibe os dados (responsabilidade da view) ele controlar os dois e a aplicação como um todo.
Unicarioca
2017.1
Exemplo Controller
public class PessoaController {
 Pessoa pessoa;
 public PessoaController(){
 pessoa = new Pessoa(); 
 }
 public void salvar() throws Exception{
 PessoaDAO pd = new PessoaDAO();
 pd.salvar(pessoa);
 }
 
 public Pessoa getPessoa() {
 return pessoa;
 }
 
 
 
 public void setPessoa(Pessoa pessoa) {
 this.pessoa = pessoa;
 }
}
View (ou visualização)
É na view que o seu sistema interage com o usuário. Tudo que ele ver (HTML / XML / RSS / CSV) deve ser gerado e exibido através dessa camada. A view, por sua vez, tem como responsabilidade:
Manipular os dados para - e apenas para - exibição;
Exibir os dados.
A view não faz nenhum tipo de escrita ou persistência no seu sistema, ela não salva dados no banco, na sessão e não busca esses dados, pois eles devem - obrigatoriamente - serem entregues pela camada controller.
Exemplo View
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <f:view>
 <head>
 </head>
 <body>
 <h:form>
 <h:inputText id="pessoa"
 value="#{pessoa.nome}">
 </h:inputText>
 <h:commandButton id="botao" type="submit" value="Salvar" action="#{pessoa.salvar}"/>
 </h:form>
 </body>
 </f:view>
</html>
Unicarioca
2017.1
Unicarioca
Atividade supervisionada
Conceito de Programação Orientada e Objetos
Nome: 
Unicarioca
2017.1

Continue navegando