Lista de Exercícios data de entrega 12

10
Lista de Exercícios data de entrega 12/05/2011 1) Sobre notação UML marque V para verdadeiro e F para falso: a) ( F ) O UML é uma metodologia orientada a objetos. b) ( V ) O UML é independente das ferramentas de modelação. c) ( F ) O UML é uma linguagem de programação robusta. d) ( V ) O Diagrama de classes é usado apenas para paradigmas do tipo Orientado a Objetos. e) ( V ) Um paradigma é um estilo de programação, a linguagem é um método para expressar instruções ao computador. 2) Indique 2 vantagens de se utilizar diagramas de classes? Exibe o conjunto de classes, interfaces e colaborações bem como seus relacionamentos. Abrange uma visão estática da estrutura do sistema (mostra o que interage, mas não o que acontece quando elas interagem). 3) Defina o que é paradigmas de programação? Cite 3 paradigmas e pelo menos uma linguagem de programação que utilize o paradigma citado? Paradigmas de Programação Definição: É basicamente um modelo que interpreta certa realidade, possibilitando a organização de idéias com o objetivo de entender essa realidade. Determina a visão que um programador possui sobre a estruturação e execução de um programa. Programação Imperativa – Linguagem C Programação Orientada a Objetos – Linguagem C# Programação Funcional – Lisp Programação Lógica – Prolog

Transcript of Lista de Exercícios data de entrega 12

Page 1: Lista de Exercícios data de entrega 12

Lista de Exercícios data de entrega 12/05/2011 1) Sobre notação UML marque V para verdadeiro e F para falso: a) ( F ) O UML é uma metodologia orientada a objetos. b) ( V ) O UML é independente das ferramentas de modelação. c) ( F ) O UML é uma linguagem de programação robusta. d) ( V ) O Diagrama de classes é usado apenas para paradigmas do tipo Orientado a Objetos. e) ( V ) Um paradigma é um estilo de programação, a linguagem é um método para expressar instruções ao computador.

2) Indique 2 vantagens de se utilizar diagramas de classes? Exibe o conjunto de classes, interfaces e colaborações bem como seus

relacionamentos. Abrange uma visão estática da estrutura do sistema (mostra o que interage,

mas não o que acontece quando elas interagem).

3) Defina o que é paradigmas de programação? Cite 3 paradigmas e pelo menos uma linguagem de programação que utilize o paradigma citado?Paradigmas de ProgramaçãoDefinição: É basicamente um modelo que interpreta certa realidade, possibilitando a organização de idéias com o objetivo de entender essa realidade. Determina a visão que um programador possui sobre a estruturação e execução de um programa.

Programação Imperativa – Linguagem CProgramação Orientada a Objetos – Linguagem C#Programação Funcional – Lisp

Programação Lógica – Prolog

4) O modelo Lâmpada representado pelo Diagrama de Classes em UML, está separado em três partes (Retângulo). Descreva o que representa cada uma destas partes.

Page 2: Lista de Exercícios data de entrega 12

Neste diagrama o retângulo superior mostra o nome do modelo ou classe, o retângulo central mostra os atributos, ou seja, os dados definem o modelo e o retângulo inferior mostra os métodos, que são operações do modelo podem ser realizadas.

5) Qual a relação entre objetos e classes?Uma classe é uma representação abstrata para um conjunto de objetos que possuem estrutura e comportamento semelhantes. As classes representam um conjunto de objetos que compartilham características e comportamentos comuns.

6) Defina: Atributos – São as características que definem um objeto, permitem a

identificação de cada objeto de uma classe. Os valores dos atributos podem variar de instância para instância. Atributos devem conter o tipo de dados a ser armazenado.

Métodos – São os comportamentos que os objetos podem tomar. O comportamento de um objeto é representado através de módulos que contém algoritmos computacionais denominados métodos.

Encapsulamento – Separação dos aspectos externos de um objeto, acessíveis por outros, dos detalhes internos da implementação que ficam ocultos dos demais.

7) Quais os tipos de visibilidade que podemos dar aos membros (atributos e métodos) de uma classe em C#.NET? Explique e exemplifique.-Private (Privada (-)) – Somente a classe terá acesso, o nível de acesso se restringe apenas a classe;private float num1;

+Public (Pública (+)) – O atributo ou método pode ser utilizado por qualquer classe, o nível de acesso é irrestrito; public int soma;

#Protected (Protegida (#)) – Somente a classe ou sub-classes terão acessoprotected string tipo;

8) Quais são os benefícios do encapsulamento? O que é necessário para encapsular atributos de uma classe?Benefícios do encapsulamento:• Clareza do código • Possibilidade de adicionar novas funcionalidades e validações posteriormente• Facilidade de ManutençãoEncapsulamento é a técnica de, em uma classe, utilizar atributos com acesso apenas private (que só podem ser acessados dentro da própria classe) e, para promover

Page 3: Lista de Exercícios data de entrega 12

acesso externo a eles, utilizar métodos public. Assim para encapsular um atributo de uma classe, este deve ser declarado como private e devemos criar um método publico para acessar esse atributo e modificá-lo.

9) Como fazemos para criar um novo objeto em C#.NET?Quando vamos criar um objeto em C#.NET utilizamos a palavra chave "new" seguindo o seguinte esquema:<Tipo> <nome> = new <Tipo>()No exemplo abaixo tem-se a criação de um objeto da classe Computador com o nome de comp1:Computador comp1 = new Computador().

10) Explique o que é herança?A herança é um princípio próprio à programação orientada para o objeto, permitindo criar uma nova classe a partir de uma classe existente. O nome “herança” (que pode às vezes ser chamada "derivação de classe") provém do fato de a classe derivada (a última classe criada) conter os atributos e os métodos da sua superclasse (a classe da qual deriva). O interesse essencial da herança é poder definir novos atributos e novos métodos para a classe derivada, que vêm acrescentar-se aos herdados.Herança é o processo de reaproveitamento das características com base em um ancestral dos quais estas querem se aproveitar.

11) Como utilizamos herança em C#.NET? O que é herança múltipla? Podemos realizar herança múltipla no C#.NET? Para herdar classes em C#.NET, deve-se utilizar o símbolo “:” após a declaração da classe, por exemplo:

123456789

101112

...class Base{ // ...} // Declara e herda a classe Baseclass Derivada: Base{ // ...}...

Herança múltipla consiste em que uma classe pode ter não apenas uma classe base, mas duas ou mais. Nesse processo, todas as características de todas as classes bases são passadas para a classe derivada. O processo é ilustrado na figura a seguir:

Page 4: Lista de Exercícios data de entrega 12

O mecanismo de herança do C#.NET não prevê herança múltipla de classes, processo contornado pelas interfaces.

12) O que acontece quando sobrescrevemos um método em C#.NET?A orientação a objetos nos permite sobrescrever métodos. Diferentemente da sobrecarga (overload) , quando podemos criar várias versões diferentes do mesmo método, a sobrescrita (override) permite criarmos uma nova implementação para um método existente em uma classe mãe, substituindo-o. As classes derivadas irão herdar essa nova implementação ao invés da antiga. Não podemos modificar a assinatura do método, tendo que manter a quantidade e os tipos dos parâmetros como também o tipo de retorno do método.Para podermos sobrescrever um método, ele deve permitir a sobrescrita tendo sido declarado como "virtual" na sua declaração. O método que vai sobrescrever deve ter a palavra chave "override" na sua declaração.

13) O que é polimorfismo? Podemos usar isto em C#.NET? Se sim, como?Polimorfismo significa “várias formas” ou “multi-forma”. Pode-se entender este processo como a habilidade de uma classe adquirir várias formas em vários objetos, ou, de se comportar de maneira diferente dependendo de em que objeto ela atua. Permite escrever programas que processam objetos que compartilham a mesma classe base em uma hierarquia de classes, como se todas fossem objetos da classe base.Podemos usar polimorfismo em C#.NET para isto devemos primeiramente criar a superclasse e definimos o método a ser modificado como virtual. Em seguida na criação das classes filhas, devemos estabelecer a referência com a classe mãe, e em seguida declarar um método com o mesmo nome do método a ser modificado, com o tipo override, que permite a sobrescrita do método anterior. E por fim aplicamos as modificações no método que irá sobrescrever o método da superclasse.

14) Qual o efeito do modificador virtual em métodos?Declara um ancestral que pode ser redefinido na classe derivada. Indica que o método ou assessor pode ser anulado por classes de herança. Suporta implementação na classe pai e não obriga a implementação na classe herdada.

Page 5: Lista de Exercícios data de entrega 12

15) Qual a utilidade de se definir métodos e atributos com o modificador protected?Quando um método ou atributo é definido com o modificador protected, este se torna acessível apenas para a classe e para as classes derivadas.

16.) Transforme o seguinte Diagrama feito em UML em código, baseado na linguagem C#.NET, explique ainda o significado das “setas”:

No diagrama acima, as setas indicam que uma classe herda características da classe superior, neste exemplo temos, Cocker herda de cachorro que por sua vez, herda de animal.

class Animal { //atributos private string tipo; private string cor; //construtor public Animal() { } public Animal(string tipo1, string c) { this.tipo = tipo1; this.cor = c; } //Metodo public void show() { Console.WriteLine(tipo + cor); } }

Page 6: Lista de Exercícios data de entrega 12

class Cachorro:Animal { //atributos private string nome; private string raca; //construtores public Cachorro() { } public Cachorro(string nome, string cor) : base("Cachorro", cor) { this.nome = nome; this.raca = "Desconhecida"; } public Cachorro(string nome, string raca, string cor) : base("Cachorro", cor) { this.nome = nome; this.raca = raca; } //Metodo public void show() { base.show(); Console.WriteLine(nome + raca); } }

class Cocker:Cachorro { //atributos private bool tosa; //Construtor public Cocker(string nome, string cor, bool tosa) : base(nome,"Cocker", cor) { this.tosa = tosa; } //Metodo public void show() { base.show(); Console.WriteLine(tosa); } }

17) Observe o diagrama de classes na notação UML a seguir e codifique cada uma das classes apresentadas:

Page 7: Lista de Exercícios data de entrega 12

**OBS: Não é necessário implementar os códigos. Deixe apenas com uma observação de método ainda não implementado.

class Veiculo { //métodos não implementados public double calcularAutonomia() { } public double calcularDistancia() { } } class Caminhao : Veiculo { //métodos não implementados public Caminhao(double cargaMaxima) { } } class Barco : Veiculo { //métodos não implementados public Barco(double cargaMaxima) { } }

18) Sobre polimorfismo, explique o que está ocorrendo (sendo feito) no diagrama abaixo:

Page 8: Lista de Exercícios data de entrega 12

Avião, Pássaro e Super-Homem não derivam de uma mesma classe mãe, mas possuem alguns métodos iguais (decolar, pousar e voar). Para um conjunto de classes diferentes implementarem métodos comuns, é necessário a criação de uma interface, no caso Voador. Uma interface funciona como uma classe modelo à qual todas as classes que a seguem (que o implementam) terão de respeitar na íntegra.