Início » C# » Conceitos Básicos de POO (Programação Orientada a Objetos) para C# – Parte 2

Conceitos Básicos de POO (Programação Orientada a Objetos) para C# – Parte 2

Continuação do artigo Conceitos Básicos de POO (Programação Orientada a Objetos) para C# – Parte 1.

  • O que é herança?

– As classes podem ser especializadas (ou generalizadas).
– Base conceitual para permitir a estensibilidade e reusabilidade.
– Define um relacionamento “is-a” ou “a-kind-of”.
– Utiliza-se herança para:
-> Criar especialização de classes e objetos existentes.
-> Adicionar novos dados e comportamentos, conhecido como estender ou especial.

  • Herança no C#

– O caractere : é usado para indicar que uma classe herda de outra. Por exemplo: public class Elefante : Animal
– Modificadores de acesso fazem diferença na relação de herança: public, protected, internal, protected internal e private.
– Modificadores: abstract, virtual, override e sealed.

  • Modificadores de acesso

– Dada uma classe A, os campos e métodos podem ter os seguintes modificadores:
-> public: o aesso é ilimitado para qualquer classe ou qualquer assembly.
-> protected: o acesso é limitado aos métodos da própria classe ou os membros das classes derivadas, em qualquer assembly.
-> internal: o acesso é limitado a todas as classes no mesmo assembly.
-> protected internal: o acesso é limitado ao assembly ou aos membros das classes derivadas.
-> private: o acesso é limitado a própria classe.

  • Classes abstratas

– Definidas com propósito de herança.
– Uma classe abstrata não pode ser instanciada.
– Cria-se uma definição comum que será compartilhada pelas classes derivadas.
– Pode definir métodos abstratos (declarados com abstract), não tem implementação e terminam com ; .
– Uma classe sealed não pode ser abstract.

  • Overriding

– Mecanismo que permite uma classe derivada redefinir (sobrescrever) um comportamento (método) herdado da sua classe base.
– O modificador override é requerido para estender ou modificar a implementação abstrata ou virtual de um membro herdado: método, indexador, propriedade ou evento.
– O método da classe base que é sobrescrito deve ser virtual ou abstract ou override.
– O método da classe derivada que sobrescreve deve receber o modificador override.

  • Operador sealed

– Pode ser aplicado a classes, métodos de instância e propriedades.
– Uma classe sealed não pode ser herdada.
– Um método sealed pode sobrescrever um método de uma classe base mas ele não pode ser sobrescrito numa classe derivada.
– Quando aplicado a um método ou propriedade, deve sempre ser usado com override.
– É um erro usar uma classe sealed como classe base ou usar com o modificador abstract.

  • O que é polimorfismo?

– Quando comportamentos relacionados variam segundo o tipo (classe), atribuir responsabilidades pelo comportamento.
– Dar o mesmo nome a serviços executados por diferentes objetos, quando estes são similares ou relacionados.
– Os diferentes tipos de objetos são, normalmente, relacionados em uma hierarquia que tenha uma superclasse comum (não é obrigatório, pois pode ser obtido através de interfaces ou vinculação dinâmica).

Tratamento de exceções

  • Por que usar exceções?

– Uma forma ultrapassada e trabalhosa de manipular erros.

  • Blocos try-catch-finally

– Solução OO para tratamento de erros.
– Cada bloco try-catch trata um tipo de exceção.
– O try demarca a parte do código que pode ser afetada por uma exceção.
– O catch usado para filtrar os erros de acordo com o tipo da exceção, que pode ser Exception ou qualquer classe derivada.
– O finally pode ser usado para executar código que será executado independente de acontecer erro.
– Você pode capturar uma exceção e lançar outra mais específica.

Manipulação e formatação de strings, números, data/hora e moeda

  • O tipo Object

– System.Object
– Classe base de todas as classes. Qualquer classe herda, direta ou indiretamente, de object.
– Métodos comuns para todos os tipos por referência:
-> ToString: converte objetos para string.
-> Equals: indica se duas referências são iguais.
-> GetType: retorna o tipo de instância.
-> Finalize: permite o objeto executar alguma limpeza ou liberação de recursos antes de ser removido pelo Garbage Collector.
->GetHashCode: função hash para tipo específico.

  • O tipo String

– System.String
– Representa um conjunto de caracteres Unicode (System.Char) que são usados para representar texto.
– O valor de uma string é o conteúdo de uma coleção seqüencial e é imutável (seu valor não é alterado).
– Os métodos oferecidos pela string não alteram a própria string, retornam uma nova string que contém a alteração.
– Fornece métodos para comparar objetos strings, retornar a posição de uma caractere ou um texto em uma string, copiar o valor da string, particionar uma string, formatação de número, data e hora (String.Format).

  • Concatenação de Strings

– A classe StringBuilder é adequada para concatenação de String quando não se conhece a quantidade de strings que serão concatenadas.
– Mantém um buffer para acomodar a concatenação de novos dados.
– Os caracteres individuais de um StringBuilder podem ser acessados através da propriedade Chars.
– Sempre aloca memória, diferente do StringBuilder que só aloca quando o buffer é pequeno para alocar a nova string.
– A classe String é recomendada quando se conhece o número de strings que serão concatenadas.

  • Data e hora com C#

– struct DateTime
– Cálculos numa variável DateTime não alteram o valor da variável, e sim retornam um novo DateTime com resultado do cálculo.
– TimeSpan representa um intervalo de tempo.
– Fornece várias propriedades e métodos para facilitar a manipulação de data e hora.
– DateTime.Now, DateTime.Year, DateTime.Month, DateTime.TimeOfDay, DateTime.Add, DateTime.AddDays, DateTime.DaysInMonth, DateTime.IsLeapYear, DateTime.ToString

Leitura e escrita de arquivos

  • Namespace System.IO

– Stream é uma classe abstrata para todos os tipos de streams, ou seja, uma abstração de uma seqüência de bytes (um arquivo), um dispositivo de entrada/saída, um fluxo de comunicação entre processos ou um socket TCP/IP.
– A classe Stream e suas derivadas fornecem uma visão genérica de diferentes tipos de entrada/saída, isolando o programador dos detalhes do SO e dispositivos em questão.
– Propriedades: CanRead, CanSeek e CanWrite.
– Read e Write: lê e escreve dados em varios formatos.
– O método Close libera os recursos do SO, tais como memória, conexões de rede e arquivos.

  • Arquivos

– Algumas classes usadas para manipular arquivos:
-> Directory: fornece métodos estáticos para criar, mover e listar diretórios e subdiretórios.
-> DriveInfo: acessa informações sobre discos.
-> File: fornece métodos estáticos para criar, mover, excluir, copiar e abrir arquivos.
-> FileStream: acesso randômico ao arquivo através do Seek.
-> GzipStream: método para compactação e descompactação.
-> SerialPort: métodos para controle da porta serial.

  • Stream

– BinaryReader/Writer: lê/escreve string codificadas e tipos primitivos.
– StreamReader/Writer: lê/escreve caracteres de um stream, usando a classe Encoding para converter para byte.
– StringReader/Writer: lê/escreve caracteres para uma string, permitindo tratar Strings com a mesma API, então a saída pode ser um Stream em qualquer codificação ou uma string.
– TextReader: classe abstrata para StreamReader e StringReader.
– TextWriter: classe abstrata para StreamWriter e StringWriter.

O conteúdo foi reproduzido do MSDN.

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor


1 Comentário

  1. Mais um excelente post Dri! Gostaria de chamar atenção para os tratamentos de exceções, que muito desenvolvedor não dá a devida importância e é justamente por esse tipo de “falha” que muitos sistemas são invadidos.

Deixe uma resposta

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: