Buscar

M1 - APRESENTAÇÃO DE ARQUITETURAS DE DESENVOLVIMENTO DE APLICAÇÕES C#

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 1/18
M1 - Aplicação dos Conceitos de Orientação a
Objetos com C#
1. Bem vindo ao C#
O Microsoft Visual C# é a mais poderosa linguagem orientada para componentes
da Microsoft. O C# desempenha um papel importante na arquitetura do Microsoft
.NET Framework, sendo comparado, algumas vezes, com o papel que o C
desempenhou no desenvolvimento do UNIX. Se já conhece uma linguagem como
C, C++ ou Java, você notará que a sintaxe do C# é, para a sua tranqüilidade,
muito familiar. Se está acostumado a programar em outras linguagens, você deve
ser capaz de assimilar rapidamente a sintaxe e o modo de trabalhar no C#; basta
aprender a colocar as chaves e os ponto-e-vírgulas no lugar.
2. Classes e objetos
2.1 Entendendo a Classificação
Classe é a raiz da palavra classificação. Ao projetar uma classe, você
sistematicamente organiza as informações em uma entidade significativa. Essa
organização é um ato de classificação e é algo que todos fazem – não apenas os
programadores. Por exemplo, todos os carros compartilham comportamentos
comuns (eles podem ser dirigidos, parados, acelerados, etc.) e atributos comuns
(eles têm um volante, um motor, etc.).
As pessoas utilizam a palavra carro para significar objetos que compartilham
esses comportamentos e atributos comuns. Desde que todos concordem com o
que a palavra significa, esse sistema funcionará bem; você pode expressar idéias,
complexas mas precisas, de uma maneira concisa. Sem a classificação, é difícil
imaginar como as pessoas poderiam pensar ou se comunicar.
Como a classificação está profundamente arraigada à maneira como pensamos e
nos comunicamos, faz sentido tentar escrever programas classificando os
diferentes conceitos inerentes a um problema e sua solução e então modelar
essas classes em uma linguagem de programação. Isso é exatamente o que você
pode fazer com linguagens modernas de programação orientada a objetos, como
o Microsoft Visual C#.
2.2 O Objetivo de Encapsulamento
O encapsulamento é um princípio importante durante a definição de classes. A
idéia é que um programa que utiliza uma classe não precisa se preocupar com o
modo como essa classe realmente funciona internamente; o programa
simplesmente cria uma instância de classe e chama os métodos dessa classe.
Desde que os métodos façam o que se propõem a fazer, o programa não se
preocupa com a maneira como eles são implementados. Por exemplo, ao chamar
o método Console.WriteLine (Este método escreve um texto informado, no modo
Console), você não quer se incomodar com todos os detalhes complicados de
como a classe Console organiza fisicamente os dados a serem escritos na tela.
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 2/18
Uma classe talvez precise manter todos os tipos de informações internas para
executar seus vários métodos. Essas atividades e informações de estado
adicionais são ocultas de programa que está utilizando a classe. Portanto, o
encapsulamento é às vezes chamado de ocultamento de informação. O
encapsulamento na realidade tem dois objetivos:
Combinar os métodos e dados dento de uma classe; em outras palavras, dar
suporte à classificação.
Controlar a acessibilidade de métodos e dados; em outras palavras, controlar
o uso da classe.
2.3 Definindo e Utilizando uma Classe
No C#, você utiliza a palavra-chave class para definir uma nova classe. Os dados
e os métodos da classe ocorrem no corpo da classe entre um par de chaves ("{" e
"}"). Veja uma classe do C# chamada Circle que contém um método (para
calcular a área do círculo) e uma parte de dados (o raio do círculo):
class Circulo 
{ 
 double Area() 
 { 
 return Math.PI * raio * raio; 
 } 
 int raio; 
}
 Nota: A classe Math contém métodos para realizar cálculos matemáticos e
campos contendo constantes matemáticas. O campo Math.PI contém valor
3,14159265358979323846, que é uma aproximação do valor de pi.
O corpo de uma classe contém métodos comuns (como Area) e campos (como
raio) – lembre-se de que as variáveis em uma classe são chamadas de campos.
Utilizar a classe Circulo é semelhante a utilizar outros tipos já encontrados; você
cria uma variável especificando Circulo e como seu tipo inicializa a variável com
algum dado válido. Obeserve o exemplo:
Circulo c; // Cria uma variável Circulo 
c = new Circulo(); // Inicializa ou instancia a variável
Observe o uso da palavra-chave new. Anteriormente, ao inicializar uma variável
como int ou float, você simplesmente atribuiu um valor a ela:
int i; 
i = 42;
Você pode fazer o mesmo com variáveis do tipo classe. Uma razão é que o C# não
fornece uma sintaxe para atribuir valores literais de classe às variáveis. (O que
significaria um Circulo igual a 42?) Outra razão diz respeito à maneira como a
memória para variáveis do tipo classe é alocada e gerenciada pelo runtime – isso
é discutido em mais detalhes adiante. Por enquanto, basta aceitar que a palavra-
chave new cria uma nova instância de uma classe (o que é mais comumente
chamado de objeto).
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 3/18
Mas você pode atribuir diretamente uma instância de uma classe a uma outra
variável do mesmo tipo, assim:
Circulo c; 
c = new Circulo(); 
Circulo d; 
d = c;
Mas isso não é tão simples e direto quanto parece ser à primeira vista, por razões
que abordaremos adiante.
Importante: Não confunda os termos classe e objeto. Uma classe é a definição
de um tipo. Um objeto é uma instância desse tipo, criada quando o programa é
executado.
2.4 Controlando a Acessibilidade
Surpreendentemente, a classe Circulo não tem atualmente nenhuma utilidade
prática. Quando você encapsula seus métodose dados dentro de uma classe, a
classe forma um limite para o mundo externo. Campos (como raio) e métodos
(como Area) definidos na classe podem ser vistos por outros métodos dentro da
classe, mas não pelo mundo externo – eles são privados para a classe. Em outras
palavras, embora possa criar um objeto Circulo em um programa, não pode
acessar seu campo raio ou chamar seu método Area, razão pela qual a classe não
é muito útil – ainda! Mas você pode modificar a definição de um campo ou método
com as palavras-chave public e private para controlar se ele pode ou não ser
acessado de fora:
Dizemos que um método ou campo é privado se ele é acessível somente a partir
de dentro da classe. Para declarar que um método ou campo é privado, você
escreve a palavra-chave private antes da sua declaração. Esse é de fato o padrão,
mas é uma boa prática determinar explicitamente que campos e métodos são
privados para evitar qualquer confusão.
Dizemos que um método ou campo é público se ele é acessível tanto de dentro
quanto de fora da classe. Para declarar que um método ou campo é público, você
escreve a palavra-chave public antes da sua declaração.
Veja a classe Circulo novamente. Desta vez, Area é declarada como um método
público e raio é declarado como um campo privado:
class Circulo 
{ 
 public double Area() 
 { 
 return Math.PI * raio * raio; 
 } 
 private int raio; 
} 
Nota: Os programadores em C# devem notar que não há um sinal de dois pontos
após as palavras-chave public ou private. Você precisa repetir a palavra-chave
para cada declaração de campo e método.
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 4/18
Observe que raio é declarado como um campo privado; ele não pode ser acessado
de fora da classe. Mas raio pode ser acessado a partir de dentro da classe Circle.
Essa é a razão do método Area poder acessar o campo raio; Area está dentro da
classe Circulo, portanto o corpo de Area tem acesso a raio.Isso significa que a
classe ainda é de valor limitado pois não há como inicializar o campo raio. Para
corrigir isso, você utiliza um construtor.
Dica: Os campos em uma classe são automaticamente inicializados com 0, false
ou null dependendo do seu tipo. Mas ainda é uma boa prática fornecer uma
maneira explícita de inicializar os campos.
Importante: Não declare dois membros de classe public cujos nomes diferem
apenas pelo uso de maiúsculas e minúsculas. Se fizer isso, sua classe não será
utilizável a partir de outras linguagens que não fazem distinção entre letras
maiúsculas e minúsculas, como o Microsoft Visual Basic.
2.5 Trabalhando com Construtores
Quando você utiliza a palavra-chave new para criar um objeto, o runtime tem que
construir esse objeto utilizando a definição da classe. O runtime tem de se
apropriar de uma parte da memória do sistema operacional, preenchê-la com os
campos definidos pela classe e então invocar o construtor para executar qualquer
inicialização necessária.
Um construtor é um método especial que executa automaticamente quando você
cria uma instância de uma classe. Ele tem o mesmo nome da classe e pode
receber parâmetros, mas não pode retornar um valor (nem mesmo void). Toda
classe deve ter um construtor. Se você não escrever um, o compilador irá gerar
automaticamente um construtor padrão para você. (Mas o construtor padrão
gerado pelo compilador na realidade não faz nada). Você pode escrever seu
próprio construtor padrão de forma muito fácil – basta adicionar um método
público, com o mesmo nome da classe, que não retorna valor. O exemplo a seguir
mostra a classe Circulo com um construtor padrão que inicializa o campo raio
como 0:
class Circulo 
{ 
 public Circulo() // construtor padrão 
 { 
 raio = 0; 
 } 
 public double Area() 
 { 
 return Math.PI * raio * raio; 
 } 
 private int raio; 
}
Nota: No jargão do C#, o construtor padrão é um construtor que não recebe
parâmetros. Não importa se ele é gerado pelo compilador ou se ele é escrito por
você; ainda assim ele é construtor padrão. Você também pode escrever
construtores não-padrão (construtores que recebem parâmetros), como veremos
na próxima seção intitulada “Sobrecarregando Construtores”.
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 5/18
Observe que o construtor está marcado como public. Se essa palavra-chave for
omitida, o construtor será privado (exatamente como qualquer outro método e
campo). Se o construtor for privado, ele não poderá ser utilizado fora da classe, o
que impede que você seja capaz de criar objetos Circulo a partir dos métodos que
não fazem parte da classe Circulo. Mas você poderá achar que os construtores
privados não são tão valiosos. Entretanto, eles realmente têm suas utilidades,
mas estas estão além do escopo da discussão atual.
Você agora pode utilizar a classe Circulo e exercitar seu método Area. Observe
como você utiliza a notação de ponto para chamar o método Area em um objeto
Circulo.
Circulo c; 
c = new Circulo(); 
double areaDoCirculo = c.Area();
2.6 Sobrecarregando Construtores
Agora você pode declarar uma variável Circulo, apontá-la para um objeto Circulo
recém-criado e então chamar seu método Area. Mas ainda existe um último
problema. A área de todos os objetos Circulo sempre será 0 porque o construtor
padrão define o raio como 0 e ele permanece em 0 (o campo raio é privado e não
há como alterar seu valor depois que é inicializado. Uma maneira de resolver esse
problema é perceber que um construtor é apenas um tipo especial de método e
que ele - como todos os métodos - pode ser sobrecarregado. Assim como existem
várias versões do método Console.WriteLine, cada uma das quais recebe
parâmetros diferentes, é possível também escrever diferentes versões de um
construtor. Você pode adicionar um construtor à classe Circulo, com o raio como
seu parâmetro, como este:
class Circulo 
{ 
 public Circulo() // construtor padrão 
 { 
 raio = 0; 
 } 
 public Circulo(int inicialRaio) // construtor sobrecarregado 
 { 
 raio = inicialRaio; 
 } 
 public double Area() 
 { 
 return Math.PI * raio * raio; 
 } 
 private int raio; 
}
Nota: A ordem dos construtores em uma classe é irrelevante; você pode definir
construtores na ordem que achar melhor.
Você pode então utilizar esse constructor ao criar um novo objeto Circulo, como
mostrado aqui:
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 6/18
Circulo c; 
c = new Circulo(45);
Quando você compila o aplicativo, o compilador deduz qual construtor ele deve
chamar com base nos parâmetros que você especifica para o operador new. Neste
exemplo, você passou um int, portanto o compilador gera o código que invoca o
construotr que recebe um parâmetro int.
Você deve estar ciente de uma peculiaridadeda linguagem C#; se você escreve
um construtor para uma classe, o compilador não irá gerar um construtor padrão.
Portanto, se você escreveu um construtor que aceita um ou mais parâmetros e
também quiser um construtor padrão, você mesmo terá de escrever o construtor
padrão.
2.7 Convenção de Nomes e Acessibilidade
As recomendações a seguir relacionam-se à convenções de nomes para campos e
métodos com base na acessibilidade dos membros da classe:
Os identificadores que são public devem iniciar com uma letra maiúscula. Por
exemplo, Area começa com “A” (não “a”) porque é public. Esse sistema é
conhecido como esquema de nomes PascalCase (foi utilizado primeiramente na
linguagem de Pascal).
Os identificadores que não são public (que incluem a variáveis locais) devem
começar com uma letra minúscula. Por exemplo, raio começa com “r” (não “R”)
porque é private. Esse sistema é conhecido como camelo (camelCase).
Só há uma exceção a essa regra: os nomes de classes devem iniciar com uma
letra maiúscula e os construtores devem corresponder exatamente ao nome de
suas classes; portanto um construtor private deve iniciar com uma letra
maiúscula.
3 Declarando Métodos
Um método é uma sequência nomeada de instruções. Se já utilizou linguagens
com o C ou Microsoft Visual Basic, você sabe que um método é muito semelhante
a uma função ou a uma sub-rotina. Um método tem um nome e um corpo. O
nome do método deve ser um identificador significativo que indique sua finalidade
geral (CalcularImpostoDeRenda, por exemplo). O corpo do método contém as
instruções reais a serem executadas quando o método é chamado. Além disso, os
métodos podem receber alguns dados para serem processados e retornar
informações, que normalmente são os resultados do processamento, sendo um
mecanismo poderoso e fundamental.
3.1 Especificando a Sintaxe de Declaração de Método
A sintaxe de um método da Microsoft Visual C# é a seguinte:
tipoDeRetorno nomeDoMétodo (listaDeParâmetros) 
{ 
 // instruções do corpo do método 
}
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 7/18
O tipoDeRetorno é o nome de um tipo e especifica o tipo de informação que o
método retorna como resultado do seu processamento. Podendo ser qualquer
tipo, como int ou string. Se você está escrevendo um método que não
retorna um valor, deve utilizar a palavra-chave void no lugar do tipo de
retorno.
O nomeDoMétodo é o nome utilizado para chamar o método. Os nomes de
métodos seguem as mesmas regras identificadoras do nome das variáveis.
Por exemplo, addValues é um nome de método válido, enquanto add$Values
não é. Por enquanto, você deve seguir a convenção camelo para nomes de
métodos – por exemplo, exibirClientes.
A listaDeParâmetros é opcional e descreve os tipos e nomes das informações
que você pode passar para o método processar. Escreva os parâmetros entre
os parênteses de abertura e fechamento com se estivessedeclarando
variáveis, com o nome do tipo seguido pelo nome do parâmetro. Se o
método que estiver escrevendo tiver dois ou mais parâmetros, separe-os
com vírgulas.
As instruções do corpo do método são as linhas de código que são
executadas quando o método é chamado. Elas ficam entre chaves de
abertura e de fechamento {}.
Importante: Os programadores C, C++ e Microsoft Visual Basic devem notar que
o C# não suporta métodos globais. Você deve escrever todos seus métodos
dentro de uma classe ou seu código não compilará.
 Eis a definição de um método chamado addValues que retorna um resultado int e
tem dois parâmetros int chamados leftHandSide e rightHandSide:
int addValues (int leftHandSide, int rightHandSide) 
{ 
 // ... 
 // as instruções do corpo do método entram aqui 
 // ... 
}
Nota: Você deve especificar explicitamente os tipos de qualquer parâmetro e o
tipo de retorno de um método. A palavra-chave var não pode ser utilizada.
A seguir, a definição de um método chamado showResult que não retorna um
valor e tem um único parâmetro int chamado answer:
void showResult (int answer) 
{ 
 //... 
}
Observe o uso da palavra-chave void para indicar que o método nada retorna.
Importante: Os programadores em Visual Basic devem notar que o C# não
utiliza palavras-chave diferentes para distinguir entre um método que retorna um
valor (uma função) e um método que não retorna um valor (um procedimento ou
sub-rotina). Você sempre deve especificar um tipo de retorno ou a palavra-chave
void.
3.2 Escrevendo Instruções return
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 8/18
Para que um método retorne uma informação (ou seja, seu tipo de retorno não é
void), você deve escrever uma instrução de retorno dentro do método, utilizando
a palavra-chave return seguida por uma expressão que calcula o valor retornando
e um ponto-e-vígula. O tipo da expressão deve ter o mesmo tipoespecificado pelo
método. Ou seja, se um método retorna int, a instrução de retorno deve retornar
um int; caso contrário, o programa não compilará. Abaixo um exemplo:
int addValues (int leftHandSide , int rightHandSide) 
{ 
 // ... 
 return leftHandSide + rightHandSide; 
}
A instrução return geralmente está no final do método porque faz esse terminar.
Todas as instruções após a instrução return não são executadas (embora o
compilador avise sobre esse problema, caso você coloque instruções depois de
instrução return).
Se não quiser que o método retorne informações (ou seja, seu tipo de retorno é
void), você pode utilizar uma variação da instrução return para causar uma saída
imediata do método. Escreva a palavra-chave return, seguida por um ponto-e-
vígula. Por exemplo:
void showResult (int answer) 
{ 
 //exibe a resposta ... 
 return; 
}
Se o método não retornar nada, você também pode omitir a instrução return,
porque o método finaliza automaticamente quando a execução chega à chave de
fechamento no fim do método. Embora essa prática seja comum, ela nem sempre
é considerada um bom estilo de programação.
Dica: Não há um comprimento mínimo para um método. Se um método ajudar a
evitar a repetição e tornar seu programa mais fácil de entender, ele será útil,
independentemente do seu tamanho. Não há também um tamanho máximo para
um método, mas uma boa prática de programação mantê-lo com o menor
tamanho possível. Se o método ocupar mais que uma tela, considere a
possibilidade de dividí-lo em métodos menores para torná-lo mais legível.
3.3 Chamando Métodos
Os métodos exitem para ser chamados! Você chama um método pelo nome para
pedir a ele que execute sua tarefa. Se o método precisar de informações
(conforme especificado pelos seus parâmetros), você deve fornecê-las. Se o
método retorna informações (conforme especificado pelo seu tipo de retorno),
você deve providenciar sua captura de alguma maneira.
3.3.1 Especificando a Sintaxe de Chamada do Método
A sintaxe de um método em C# é a seguinte:
resultado = nomeDoMétodo (listaDeArgumentos);
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 9/18
O nomeDoMétodo deve corresponder exatamente ao nome do método que
você está chamando. Lembre-se, o C# é uma linguagem que faz distinção
entre maiúsculas e minúsculas.
A cláusula resultado = é opcional. Se especificada, a variável identificada
como resultado conterá o valor retornado pelo método. Se o método for void
(não retorna um valor), você deve omitir a cláusula resultado = da instrução.
A listaDeArgumentos fornece informações opcionais que o método aceita.
Você deve fornecer um argumento para cada parâmetro, e o valor de cada
argumento deve ser compatível com o tipo do seu parâmetro
correspondente. Se o método que você está chamando tiver dois ou mais
parâmetros, separe os argumentos com vírgulas.
Importante: Você deve incluir os parênteses em cada chamada de método,
mesmo quando estiver chamando um método sem argumentos.
Para esclarecer esses pontos, examine o método addValues novamente:
int addValues (int leftHandSide , int rightHandSide) 
{ 
 // … 
}
O método addValues tem dois parâmetros int, portanto você deve chamá-lo com
dois argumentos int separados por vígulas:
int arg1 = 99; 
int arg2 = 1; 
addValues (arg1 , arg2);
Se você tentar chamar addValues de alguma outra maneira, provavelmente não
será bem-sucedido, pelas razões descritas nos exemplos abaixo:
addValues // erro em tempo de compilação, sem parênteses 
addValues() // erro em tempo de compilação, sem argumentos suficientes 
addValues(39) // erro em tempo de compilação, sem argumentos suficientes 
addValues(“39”, “3”) // erro em tempo de compilação, tipos errados
O método addValues retorna um valor int. Esse valor int poderá ser utilizado
sempre que um valor int puder ser utilizado. Considere estes exemplos:
int result = addValues(39, 3) // no lado direito de uma atribuição 
showResult(addValues(39, 3)) // como argumento para outra chamada de método 
Dica: Você pode chamar os métodos que pertencem a outros objetos prefixando o
método com o nome do objeto.
3.4 Aplicando Escopo
Em alguns exemplos, você pode ver que é possível criar variáveis dentro de um
método. Essas variáveis passam a existir a partir do ponto em que elas são
definidas, e as instruções subsequentes no mesmo método podem então utilizá-
las; uma variável só pode ser utilizada depois de ser criada. Quando o método
termina, essas varáveis desaparecem.
Se uma variável pode ser utilizada em um local específico em um programa,
dizemos que ela está no escopo desse local. Ou seja, o escopo de uma variável é
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 10/18
simplesmente a região do programa na qual essa variável é utilizada. O escopo se
aplica aos métodos e às variáveis. O escopo de um identificador (de uma variável
ou método) está vinculado ao local da declaração que introduz o identificador no
programa, como você verá agora.
3.4.1 Definindo Escopo
As chaves de abertura e fechamento que formam o corpo de um método definem
um escopo. Todas as variáveis que você declara dentro do corpo de um método
estão no seu escopo; elas desaparecem quando o método termina e só podem ser
acessadas pelo código executado dentro desse método. Essas variáveis são
denominadas variáveis locais porque são locais para o método em que são
declaradas; elas não estão no escopo de nenhum outro método. Essa estrutura
significa que você não pode utilizar as variáveis locais para compartilhar
informações entre os método. Considere este exemplo:
class Example 
{ 
 void firstMethod() 
 { 
 int myVar; 
 ... 
 } 
 
 void anotherMethod() 
 { 
 myVar = 42; // erro – variável fora do escopo... 
 } 
}
Ocorrerá umafalha na compilação desse código porque anotherMethod está
tentando utilizar a variável myVar que não está no escopo. A variável myVar só
está disponível para as instruções em firstMethod, ocorrendo depois que a linha do
código é declarada como myVar.
3.4.2 Definindo o Escopo da Classe
As chaves de abertura e fechamento que formam o corpo de uma classe também
criam um escopo. Todas as variáveis que você declara dentro do corpo de uma
classe (mas não dentro de um método) estão no âmbito dessa. O nome
apropriado do C# para as variáveis definidas por uma classe é field (campo). Ao
contrário das variáveis locais, os campos podem ser utilizados para compartilhar
informações entre métodos. A seguir, um exemplo:
class Example 
{ 
 void firstMethod() 
 { 
 myField = 42; // ok ... 
 } 
 
 void anotherMethod() 
 { 
 myField++; // ok ... 
 } 
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 11/18
 int myField = 0; 
}
A variável myField é definida dentro da classe, mas fora dos métodos firstMethod
e anotherMethod. Portanto, myField tem escopo de classe e será disponível para
uso por todos os métodos da classe.
Há um outro ponto a ser observado nesse exemplo. Em um método, você deve
declarar uma variável antes de poder utilizá-la. Os campos são um pouco
diferente. Um método pode utilizar um campo antes da instrução que define o
campo – o compilador resolve os detalhes pra você!
3.5 Sobrecarregando Métodos
Se dois identificadores têm o mesmo nome e são declarados no mesmo escopo,
dizemos que eles estão sobrecarregados (overloaded). Um identificador
sobracarregado costuma ser um erro que é capturado como um erro de tempo de
compilação. Por exemplo, se declarar duas variáveis locais com mesmo nome no
mesmo método, você receberá um erro de tempo de compilação. Da mesma
forma, se declarar dois campos com o mesmo nome na mesma classe ou dois
métodos idênticos na mesma classe, você também receberá um erro de tempo de
compilação. Não vale a pena mencioná-lo, uma vez que tudo que vimos até aqui
tem resultado em um erro de tempo de compilação. Mas há uma maneira útil e
importante pela qual você pode sobrecarregar um identificador.
Considere o método WriteLine da classe Console . Você utiliza esse método para
exibir uma string na tela, no modo Console. Mas ao digitar WriteLine na janela
Code and Text Editor escrevendo em C#, você notará que o IntelliSense oferece
19 opções diferentes! Cada versão do método WriteLine tem um conjunto de
parâmetros diferente; uma versão não tem parâmetros e simplesmente gera uma
linha em branco; outra aceita um parâmetro bool e gera uma representação em
string desse valor (true ou false); e ainda outra aceita um parâmetro decimal e
gera uma string, e assim por diante.
Em tempo de compilação, o compilador examina os tipos de argumentos que você
está passando e então chama a versão do método que tem o conjunto de
parâmetros correspondente. Abaixo um exemplo:
static void Main() 
{ 
 Console.WriteLine(“The answer is “); 
 Console.WriteLine(42); 
}
A sobrecarga é útil principalmente quando você precisa executar a mesma
operação em diferentes tipos de dados. Você pode sobrecarregar um método
quando as diferentes implementações têm diferentes conjuntos de parâmetros;
isto é, quando elas têm o mesmo nome, mas um número diferente de
parâmetros, ou quando os tipos de parâmetros forem diferentes. Esse recurso é
permitido para que, quando você chamar um método, possa fornecer uma lista de
argumentos separados por vígula; e o número e o tipo dos argumentos sejam
utilizados pelo compilador para selecionar um dos métodos sobrecarregados. Mas
note que embora possa sobrecarregar os parâmetros de um método, você não
pode sobrecarregar o tipo de retorno de um método. Ou seja, você não pode
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 12/18
declarar dois métodos com o mesmo nome, cuja diferença seja apenas o seu tipo
de retorno (o compilador é inteligente, mas não tão inteligente).
Exercício 1:
Uma pizzaria fez uma ampliação de suas instalações e o gerente aproveitou para
melhorar o sistema informatizado, que era limitado e não atendia a todas as
funções necessárias. O gerente, então, contratou uma empresa para ampliar o
software. No desenvolvimento do novo sistema, a empresa aproveitou partes do
sistema antigo e estendeu os componentes de maneira a usar código validado,
acrescentando as novas funções solicitadas. Que conceito de orientação a objetos
está descrito na situação hipotética acima? 
A)
Sobrecarga
B)
Herança
C)
Sobreposição
D)
Abstração e Mensagem
E)
Polimorfismo
Comentários:
Essa disciplina não é ED ou você não o fez comentários 
Exercício 2:
Com relação a conceitos de orientação a objetos, julgue os seguintes itens.
I. As variáveis ou métodos declarados com modificador de acesso private só são
acessíveis a métodos da classe em que são declarados.
II. Uma classe deve possuir uma única declaração de método construtor.
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 13/18
III. Uma instância de uma classe abstrata herda atributos e métodos de sua
superclasse direta.
IV. O polimorfismo permite substituir a lógica condicional múltipla (lógica switch
ou faça caso).
Estão certos apenas os itens:
A)
I e II
B)
I e III
C)
I e IV
D)
II e III
E)
II e IV
Comentários:
Essa disciplina não é ED ou você não o fez comentários 
Exercício 3:
Na orientação a objeto, o encapsulamento é um princípio importante durante a
definição de classes. Selecione a afirmação que não corresponde da idéia do
encapsulamento:
A)
Com o encapsulamento é possivel acessar todos os dados de uma classe sem a
necessidade de métodos
B)
O encapsulamento combina dados e métodos dentro de uma classe
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 14/18
C)
Desde que os métodos façam o que se propõem a fazer, o programa não se
preocupa com a maneira como eles são implementados
D)
O encapsulamento pode ser chamado de ocultamento de informação
E)
O encapsulamento é uma forma de controlar a acessibilidade de métodos e dados
Comentários:
Essa disciplina não é ED ou você não o fez comentários 
Exercício 4:
Dizemos que um método ou campo é público se ele é acessível dentro ou fora da
classe. Para declarar que um método ou campo não é público escrevemos qual
palavra antes da declaração:
A)
New
B)
Class
C)
Public
D)
Static
E)
Private
Comentários:
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 15/18
Essa disciplina não é ED ou você não o fez comentários 
Exercício 5:
Um algoritmo construído corretamente, consegue apresentar passos importantes
para um desenvolvedor. Nos tempos atuais, ter um algoritmo é ter uma base
sólida, para que toda a técnica de programação seja aplica de maneira precisa.
Para isso podemos definir que algoritmos são:
A)
Uma sequência finita de passos que direcionam a execução de uma tarefa. Um
algoritmo pode ser comparado, por exemplo, a uma receita, uma sequência de
instruções que identificam uma meta específica
B)
Uma sequência infinita de passos que direcionam a execução de uma tarefa. Um
algoritmo pode ser comparado, por exemplo, a uma receita, uma sequência de
instruções que identificam uma meta específica
C)
Uma sequência exponencialmente precisa de passos que direcionam a execução
de uma tarefa. Um algoritmo pode ser comparado, por exemplo, a uma receita,
uma sequência de instruções que identificam uma meta específica
D)
Uma sequência equivalente de passos que direcionama execução de uma tarefa.
Um algoritmo pode ser comparado, por exemplo, a uma receita, uma sequência
de instruções que identificam uma meta específica
E)
Uma sequência derivada de passos que direcionam a execução de uma tarefa. Um
algoritmo pode ser comparado, por exemplo, a uma receita, uma sequência de
instruções que identificam uma meta específica
Comentários:
Essa disciplina não é ED ou você não o fez comentários 
Exercício 6:
Esse título é atribuído posteriormente a uma linguagem de programação, por
exemplo, ao ser programado um código C#, será gerado um código C#. Nesse
texto podemos afirmar que o item abortado é:
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 16/18
A)
PseudoSystem
B)
PseudoDialog
C)
PseudoCódigo
D)
PseudoClasse
E)
PseudoMetodo
Comentários:
Essa disciplina não é ED ou você não o fez comentários 
Exercício 7:
O desenvolvimento de aplicações C# pode ser considerado um estudo baseado na
interação e na composição, bem como a disseminação pelo projeto de software
denominado de camada de objetos. Em muitos cenários leva-se em consideração
a utilização da modelagem de programação orientada a objetos em vez da
programação procedural. O paradigma de orientação a objetos aproxima-se de
itens conceituais e, principalmente, da origem do campo de estudo da cognição,
que por muitas vezes exerceu influência nas áreas de inteligência artificial e da
linguística, sobretudo no âmbito da abstração de conceitos do mundo real. Com
isso podemos considerar as linguagens para desenvolvimento de software:
A)
Java, Visual Basic, C#, C++
B)
HJava, Cy#, RT, Visual Basic
C)
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 17/18
RT, Cy#, C++, HC#
D)
YT, RT, Y#, Kh#
E)
Java, Sybase#, System#, Object#
Comentários:
Essa disciplina não é ED ou você não o fez comentários 
Exercício 8:
Através do Diagrama de Caso de Uso, o analista de sistemas consegue passar
todo o entendimento de regras de negócio para que o desenvolvedor consiga
absorver e aplicar dentro do software. Para isso podemos considerar que:
A)
Por meio Diagrama de Caso de Uso o desenvolvedor pode entender a
funcionalidade, entender a implantação do software e a comunicação com o
ambiente de produção
B)
Por meio Diagrama de Caso de Uso o desenvolvedor pode entender a
funcionalidade, entender a implantação do software e a comunicação com o
ambiente de homologação
C)
Por meio Diagrama de Caso de Uso o desenvolvedor pode entender a
funcionalidade, entender a implantação do software e a comunicação com o
ambiente de desenvolvimento
D)
Por meio Diagrama de Caso de Uso o desenvolvedor pode entender a
funcionalidade, entender o fluxo de navegação da funcionalidade e visualizar as
mensagens que serão exibidas pelo software
E)
22/10/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 18/18
Por meio Diagrama de Caso de Uso o desenvolvedor pode entender a
funcionalidade, entender a implantação do software e visualizar as mensagens
que serão exibidas pelo software
Comentários:
Essa disciplina não é ED ou você não o fez comentários

Outros materiais