![]() |
Created by Thiago Russo
over 7 years ago
|
|
Question | Answer |
O que são tipos em um linguagem OO como o C#? O que os tipos "mostram" ? | Em uma linguagem orientada a objetos, como C#, os objetos e os tipos são os blocos fundamentais de construção. Um tipo pode ser visto como uma "planta baixa" ou "modelo" para a construção de um objeto. Ela mostra q dados podem ser utilizados e quais comportamentos estão presentes. |
Quais são as 3 categorias de types o C# oferece? | ■ Tipos de valor ■ Tipos de referência ■ tipos de ponteiro Tipos de ponteiro são raramente utilizados. Vc os utiliza somente qdo se trabalha com código não seguro (unsafe code) e qdo precisa usar a aritmética de ponteiro. |
O que é um Enum? Dê 2 exemplos simples |
Image:
Enum (image/png)
|
enum com atributo Flags |
Image:
Enum Flags (image/png)
|
tipo referência x tipo valor | tipo de referência: como o nome sugere, contém uma referência ao valor real. Ex: Uniform Resource Locator (URL). Se vc ler algo interessante na web, pode enviar a URL p/ um amigo e apontar p/o local correto onde a informação é armazenada. tipo de valor: contém o valor diretamente. Um tipo de valor é diferente. Se você ler um artigo interessante em uma revista e vc quer passar p/ seu amigo, vc precisa fazer uma cópia do artigo e entregar-lhe. |
heap x stack | No Common Language Runtime (CLR) que sustenta C#, existem dois locais em q um tipo pode ser armazenado na memória: heap e stack. O valor de um tipo de referência é armazenado na heap (memória), e o endereço para este valor é armazenado na stack (pilha). |
Todo tipo valor é armazenado na stack? quais os benefícios de armezenar na stack? | Embora um tipo de valor é normalmente armazenado na stack, há exceções (por exemplo, uma classe que contém um tipo de valor como um de seus campos, uma expressão lambda que se fecha sobre um tipo de valor, ou um tipo de valor que é boxed), mas esta ideia é geral. O benefício de armazenar dados na stack é que é mais rápido, menor e não precisam da atenção do coletor de lixo (garbage collector). |
Quando utilizar tipos valor? Quais os 3 critérios pra determinar se deve utilizar um tipo valor? | Tipos de valor são úteis qdo se trata de pequenas estruturas de dados. Por ex, um ponto c/ x e y (corordenada) é um candidato p/ um tipo de valor. Como regra geral, vc pode conferir os 3 critérios abaxo p/ determinar se vc deseja criar um tipo de valor: ■ O objeto é pequeno. ■ O objeto é logicamente imutável. ■ Há uma grande quantidade de objetos. O único que pode determinar se vc precisa de um tipo de valor é vc. Se vc estiver otimizando p/ velocidade ou p/ uso de memória, a única maneira de determinar se um tipo de valor pode melhorar o desempenho é através da medição. Dica: Um tipo de valor deve ser usado para pequenos objetos imutáveis, que são muito utilizados. Em todas as outras situações, use um tipo de referência. |
Em, C# tipos valor e tipos referencia heram de que? Podemos herdar normalmente desses tipos base? | Todos os objetos em C# herdam de System.Object Tipos de valor herdam de System. ValueType (herda de System.Object). System.ValueType substitui algumas das funções padrões (como GetHashCode, Equals, e ToString) para dar uma implementação mais significativa para um tipo de valor. Em C#, você não pode herdar diretamente de System.ValueType. Em vez disso, você pode usar a palavra-chave struct para criar um novo tipo de valor. |
struct |
Image:
Struct (image/png)
|
comportamentos de um tipo function x method | As ações q seu tipo expõe, devem ser a principal razão da sua existência. Vc deve pensar em sua nova classe em termos do que ele pode fazer ñ dos dados q armazena. Em C#, vc adiciona o comportamento de classes, utilizando métodos. ”FUNCTION” vs “METHOD” Às vezes, o termo "função" é utilizado, e, por vezes, o termo "método" é usado. Uma função implica q ela tem retorno e ñ modifica nada no sistema. Vc pode dizer q uma função é a parte "read" do sistema. Isto é o que ainda é usado em linguagens funcionais como F#, em q as estruturas de dados imutáveis são comuns. Método permite a modificação de dados e ñ retorna quaisquer dados. Esta é a parte "write" do sistema. Vc pode ver esta distinção em Func <T> e Action que foram adicionados ao .NET Func <T> tem um tipo de retorno, enquanto que a Action ñ retorna nada. Em C#, essa distinção não é usado. O termo utilizado é o "método." |
passos para criar um método | 1. Escolha um nome para o seu método. 2. Decida quais dados devem ser passados para o seu método (parâmetros). 3. Decida quais os dados que você deseja retornar para o chamador (return). 4. Decida sobre a visibilidade do seu método. |
boas práticas para criar seus métodos | Nome do método deve dizer com clareza o que ele faz. Não criar métodos grandes (quebrar métodos grandes em menores) Um método deve fazer "uma coisa", deve ter uma responsabilidade. Nome de parâmetros intuitivos |
Qual método usar? public Distance CalculateDistanceTo(Customer customer) { Distance result = … // Algum processamento complexo que utiliza customer.Address return result } public Distance CalculateDistanceTo(Address address) {...} ?? | O problema da opção 1 é q o objeto Customer só é usado p/ recuperar o Address. Como o algoritmo de cálculo de distância está acoplado a um Customer. alterações na classe Customer, como adicionar um endereço de entrega e um endereço de cobrança, vai repercutir através a esta classe. A opção 2 pede apenas os dados de que necessita. Este é um projeto mais claro e simples que melhora a capacidade de manutenção. |
argumentos opcionais e argumentos nomeados | |
métodos de sobrecarga (overloading) | Tb é possível criar métodos c/ o mesmo nome que diferem nos argumentos q eles possuem, q é chamado de sobrecarga (overloading). Um exemplo no .NET Framework é Console.WriteLine. Esse método tem 19 diferentes sobrecargas q levam parâmetros diferentes. Você cria uma sobrecarga de um método usando o mesmo nome e tipo de retorno exato, mas utiliza diferentes nos argumentos que você espera. |
visibilidade do método modificadores de acesso | Ao criar um método, é importante decidir sobre sua visibilidade. Se vc ñ declarar um modificador de acesso, seu método será private por padrão. As outras opções são: públicos (public), interno (internal), protegido(protected) interno protegido (internal protected) *+ detalhes no objective 2.3 |
declarando e usando um field (campo) qual a estrutura de um field? pra que serve? como fazer um filed read only? |
Image:
Field (image/png)
|
field const (constante) | Se o valor é definido no campo em tempo de compilação, tb pode marcar como const. Assim, o compilador sabe ao certo q o valor nunca vai mudar e ele pode executar alguma otimização. Tb garante q vc n possa substituir o valor do campo. Todas as atribuições para o campo em seu código irão resultar em um erro de compilação. |
indexador (indexer) exemplo do baralho |
Image:
Indexador (image/png)
|
o que é um campo estático? pra que serve? qual o efeito perigoso de usá-lo? exemplo de campo e método estático x não estático |
Image:
Static (image/png)
|
Construtor exemplo e explicação Por quais razões vc cria seus próprios construtores? |
Image:
Ctor (image/png)
|
Construtor boas práticas | ■ Declarar explicitamente o construtor público padrão nas classes se tal construtor for necessário. ■ Assegure-se que seu construtor leva alguns parâmetros possíveis. ■ Mapeie parâmetros do construtor para propriedades de sua classe. ■ Lance exceções de instância de construtores se for caso disso. ■ Não chame membros virtuais a partir de um objeto dentro de seu construtor. |
Construtores encadeados |
Image:
Ctor Encadeado (image/png)
|
Want to create your own Flashcards for free with GoConqr? Learn more.