Você está na página 1de 6

ATIVIDADE SA04

Pesquise e responda as questões abaixo com suas próprias palavras. Para responder
você 
pode utilizar qualquer material, como o livro do AVA, outros livros, sites etc. contudo,
não 
será aceito cópias, nem de colegas e nem das fontes buscadas, nem mesmo de
pequenos 
parágrafos. Você deve escrever com suas próprias palavras a interpretação que
obteve sobre as respostas. Não economize palavras e bom trabalho! =D
Data de entrega: 14/06/2022, via AVA.

01 – O que é Programação Orientada a Objetos (POO)? Qual sua diferença da


programação estrutural?
R: A programação orientada a objetos é um modelo de programação onde diversas
classes possuem características que definem um objeto na vida real. Cada classe
determina o comportamento do objeto definido por métodos e seus estados possíveis
definidos por atributos. Foi criado com o intuito de aproximar o mundo real do mundo
virtual. Foi criada uma estrutura chamada Classe, para dar suporte à definição de
Objeto, que reúne todos os objetos com características em comum, expõe todos os
serviços disponíveis por seus objetos e quais informações são permitidas que sejam
armazenadas.

Programação orientada a objetos Programação estruturada


Polimorfismo  Não possui

Métodos  Procedimentos e funções

Classes Tipos de dados definidos pelo usuário

Herança Não possui

Mensagens Chamadas a procedimentos e funções

Instância de variáveis Variáveis

02 – Os 4 pilares da programação Orientada a Objetos (POO) são polimorfismo,


herança, abstração e encapsulamento. Descreva, com suas palavras, cada um
desses pilares, sua função, vantagens de uso, características, etc.
Abstração: consiste em trazer algo do mundo real ao mundo virtual, conseguir
modelar qualquer coisa do mundo que conhecemos para o mundo que a máquina
conhece. Este é o pilar mais importante, pois sem ele não teríamos nenhum outro.
Exemplo:
public class Conta {
      int cod_banco;
      int num_conta;
      double saldo;
      double limite;

      void ConsultarSaldo() {
          System.out.println(“Conta: ” + this.num_conta);
          System.out.println(“Saldo: ” + this.saldo);
      }
      void Depositar(double valor) {
          this.saldo = this.saldo + valor;
      }

      void Sacar(double valor) {


          this.saldo = this.saldo - valor;
      }
  }

Herança: A herança permite o reaproveitamento de código, essencialmente


classificação, evitando a reescrita. Além de deixar claro a hierarquia entre classes,
permite que sejam escritos objetos mais especializados herdando de classes mais
generalistas.
Exemplo:
public class Pessoa {
      public String nome; // Define o nome da pessoa
      public String cpf;  // Define o cpf da pessoa
      public Date data_nascimento; // Define a data de nascimento da pessoa

      // Construtor da classe Pessoa, passando todos os seus atributos


      public Pessoa(String _nome, String _cpf, Date _data) {
          this.nome = _nome;
          this.cpf = _cpf;
          this.data_nascimento = _data;
      }
  }

  // Classe Aluno que herda da classe Pessoa


  public class Aluno extends Pessoa {
      // Herda os atributos da classe super
      public Aluno(String _nome, String _cpf, Date _data) {
          super(_nome, _cpf, _data);
      }
      public String matricula; // Define a matricula do Aluno
  }

  public class Professor extends Pessoa {


      // Herda os atributos da classe super
      public Professor(String _nome, String _cpf, Date _data) {
          super(_nome, _cpf, _data);
      }
      public double salario; // Define o salário do professor
      public String disciplina; // Define a disciplina do professor
  }

  public class Funcionario extends Pessoa {


      // Herda os atributos da classe super
      public Funcionario(String _nome, String _cpf, Date _data) {
          super(_nome, _cpf, _data);
      }
      public double salario; // Define o salário do funcionário
      public Date data_admissao; // Define a data de admissão do funcionário
      public String cargo; // Define o cargo do funcionário
  }

Polimorfismo: O polimorfismo diz respeito aos métodos dos objetos, permitindo que
um método de classe abstrata tome diferentes comportamentos pelas classes filhas,
fazendo que a mesma assinatura de método em duas classes diferentes tome
comportamentos diferentes, isso permite uma série de possibilidades na programação.
Exemplo:
public abstract class Forma
  {
      public Forma()
      {
      }

      public virtual void Desenhar(System.Drawing.Graphics g)


      {
      }
  }

Encapsulamento: é a forma pela qual o programa é divido a ponto de se tornar o


mais isolado possível, ou seja, cada método pode ser executado isoladamente e
retornar um resultado satisfatório ou não para cada situação. Sendo assim, o objeto
não necessita conhecer de qual forma cada método foi implementado.
Exemplo:
public class Pessoa {
      private String nome; // Define o nome da pessoa
      private String cpf; // Define o cpf da pessoa
      private Date dat_nasc; // Define a data de nascimento da pessoa

      // Obtem o nome da pessoa


      public String getNome() {
          return nome;
      }

      // Atribui o nome a pessoa


      public void setNome(String nome) {
          this.nome = nome;
      }

      // Obtem o cpf da pessoa


      public String getCpf() {
          return cpf;
      }

      // Atribui o cpf a pessoa


      public void setCpf(String cpf) {
          this.cpf = cpf;
      }

      // Obtem a data de nascimento da pessoa


      public Date getDatNasc() {
          return dat_nasc;
      }

      // Atribui a data de nascimento a pessoa


      public void setDatNasc(Date dat_nasc) {
          this.dat_nasc = dat_nasc;
      }
  }.

03 – Defina Classe, Métodos e Atributos. Responda também o que são Classes,


Métodos e Atributos estáticos.
R: Classes: são receitas de um objeto, onde têm características e comportamentos,
permitindo assim armazenar propriedades e métodos dentro dela. Para construir uma
classe é preciso utilizar o pilar da abstração. Uma classe geralmente representa um
substantivo, por exemplo: uma pessoa, um lugar, algo que seja “abstrato”.
Atributos: são as características de um objeto, essas características também são
conhecidas como variáveis, utilizando o exemplo dos cães, temos alguns atributos,
tais como: cor, peso, altura e nome.
Métodos: são as ações que os objetos podem exercer quando solicitados, onde
podem interagir e se comunicarem com outros objetos, utilizando o exemplo dos cães,
temos alguns exemplos: latir, correr, pular.
Estáticas:
A classe estática em si é idêntica a uma classe não estática, a única diferença entre as
duas é que a classe com o atributo STATIC não pode ser instanciada.Classes
estáticas possuem apenas membros estáticos, podendo ser utilizadas quando não
existe a dependência de uma identidade do objeto. Este tipo de classe não pode
herdar de outra classe, pois são consideradas seladas, isto indica que restringe
características de herança.
O método estático ou método utilitário não necessita de um objeto instanciado para ser
utilizado.Para utilizar algum método estático é necessário apenas usar o nome da
classe, seguido por um ponto e o nome do atributo/método.
O valor do atributo static é compartilhado entre todos os objetos da classe, caso seja
alterado em qualquer objeto, todos os outros sofrerão a mesma mudança. Também
não é necessária a instância de um objeto para utilização de atributos estáticos.
Métodos e atributos estáticos podem ser encontrados em classes não estáticas, então
não é necessário criar uma classe estática para utilizar métodos e atributos com este
modificador.

04 - Como é definida a assinatura de um método? É possível ter mais de um


método com o mesmo nome?
R: A assinatura de um método é dada pelo número e tipos de argumentos do
método, assim como por seu valor de retorno.
Não pode ter dois métodos com o mesmo nome. Assim como já não poderia ter,
mesmo em classes diferentes, que também tem seu nome modificado
internamente.

05 – Como é feita a instanciação de uma Classe em linguagens como Java e C#?


R: Java: Para utilizar uma classe devemos declará-la da mesma maneira que se
declara uma variável de tipo primitivo. Declaramos o tipo (neste caso o nome da
classe) seguido pelo nome da variável. Exemplo de instanciação de classe: Produto
produtoUm; produtoUm = new Produto(); produtoUm.
C#: para criar uma instância de uma classe usamos a palavra-chave new. Assim o
exemplo : Clientes macoratti = new Clientes(); Cria uma instância da classe Cliente()
ou seja cria o objeto macoratti do tipo Cliente().

06 – Qual o significado da palavra reservada this em linguagens como Java e


C#?
R: this: Variável de referência que diz respeito a instância atual de um objeto;

07 - Discorra sobre os modificadores de acesso Public, Private e Protected.


R: Public: Com este modificador, o acesso é livre em qualquer lugar do programa.
Private: Com este modificador, o acesso é permitido somente dentro da classe onde
ele foi declarado. Por padrão, é a visibilidade definida para métodos e atributos em
uma classe.
Protected: Com este modificador, apenas a classe que contém o modificador e os
tipos derivados desta classe tem o acesso.

08 – Qual a função do tratamento de exceções e quando utilizá-lo?


R: Tratar exceções é fundamental para que não tenha uma parada na execução do
software, podendo executar comandos que tentem contornar o problema enfrentado.
O tratamento de exceções é extremamente recomendado, além de ser uma boa
prática. Exceções podem ser geradas durante a execução de um software por
diversos motivos, seja por manipulação incorreta de variáveis, erros de hardware ou
por uma simples divisão por zero.

09 – Qual a diferença entre Classes Abstratas e Interfaces?


R: Classes abstratas são utilizadas como modelos para classes concretas e a sua
utilização se dá por herança, servindo de classe mãe. Não podem existir instâncias de
classes abstratas, já que as mesmas só podem ser utilizadas como superclasses.
Essa classe, ainda permite a criação de métodos com corpo, devendo possuir pelo
menos um método abstrato (não possuir implementação, apenas a assinatura do
método).Não é possível instanciar um objeto de uma classe abstrata.

Interfaces auxiliam na construção de classes. Os métodos abstratos de uma interface


não possuem corpo, apenas a declaração do mesmo com o retorno, nome e
parâmetros. A definição das funcionalidades de cada método é de responsabilidade
das classes que implementam as interfaces. Interface é uma entidade, uma forma de
contrato com as classes que irão implementar, pois garante que os métodos sejam
criados nessas classes. Existe uma obrigatoriedade que todos os novos automóveis
devem possuir, como o airbag e freio ABS. Este contrato com as montadoras faz com
que só possam vender novos veículos, caso eles sigam o contrato. Assim também são
as interfaces, pois permitem que as classes que irão implementar, sigam o contrato. A
utilização das interfaces se dá por implementação e não por herança, como vimos nas
classes abstratas. Algumas linguagens permitem a herança múltipla, já outras
linguagens não. Para estas linguagens, a implementação de várias interfaces pode
auxiliar neste quesito. Todos os métodos de uma interface são abstratos e quando
uma classe implementa a interface, é necessário que sobrescreva todos estes
métodos.Geralmente, interfaces possuem o prefixo I antes do nome, para indicar que
se trata de uma interface. Não é possível instanciar um objeto de uma interface.
Diferença: Uma interface não pode conter qualquer tipo de código, muito menos
código padrão. Uma classe abstrata pode fornecer código completo, código padrão ou
ter apenas a declaração de seu esqueleto para ser posteriormente sobrescrita.

10 – O que são Construtores? É obrigatório seu uso? Como são definidos?


R: O Construtor é executado na criação do objeto com o uso da palavra chave new.
Geralmente é utilizado para definir os valores padrões dos atributos de um objeto e
para verificações. O método construtor não possui nenhum retorno. Escrever os
métodos construtores permitem a execução de alguns comandos assim que o objeto é
criado, podendo ser utilizado para definir valores iniciais e chamar outros métodos. Os
métodos construtores são ótimos quando existe a necessidade de solicitar valores ao
criar um objeto, fazendo com que o mesmo só realmente seja criado, caso as
informações sejam enviadas como parâmetros. 
“Os construtores são métodos especiais que são invocados para reservar espaço na
memória do computador a ser ocupado por um novo objeto. Além de exercerem um
papel essencial no processo de instanciação de classes, os construtores também
podem ser utilizados para inicializar os atributos com valores predefinidos ou com
valores informados.”  –(SANTOS, 2014, p 356)
Métodos construtores são métodos com o mesmo nome da classe, permitindo que
seja especificado os parâmetros necessários para criação de objetos da classe. 
Exemplo:
public Calculadora( )
{
}
public Calculadora ( a int i , b nt , string tipo)
{
}

Você também pode gostar