William Ivanski
Curso de Programação C#
Sumário
Paradigmas
 Objeto
 Classe
 Atributos
 Métodos
 Método Construtor
 Modificadores de Acesso
 Encapsulamento

Sumário
Propriedades
 Herança

Paradigmas

O que é paradigma?
 Modelo,
 Padrão, ou
 Estilo de programação suportado por
linguagens que agrupam certas
características comuns
Paradigmas
Paradigmas

Modelo Imperativo
 Linguagens expressam sequências de
comandos que realizam transformações
sobre dados.
 Podem ser:
○ Orientadas a procedimentos
 Ex.: Pascal, C
○ Orientadas a objetos
 Ex.: C#, Java, Python, Delphi, Ruby, Eiffel, Visual
Basic, Flavours
Paradigmas

Modelo Declarativo
 Linguagens que não possuem os conceitos
de:
○ Sequências de comandos
○ Atribuição
 Podem ser:
○ Linguagens funcionais
 Ex.: Haskell, F#
○ Linguagens lógicas
 Ex.: Prolog, LISP
Paradigmas

Qual paradigma aprendemos até agora?
Paradigmas

Qual paradigma aprendemos até agora?
 Paradigma imperativo orientado a
procedimentos
C# é uma linguagem orientada a
objetos, mas permite que se utilize
apenas procedimentos
 A partir de agora, veremos um pouco
mais do poder do C#, através da
programação orientada a objetos

Objeto
O que é um objeto?
 Tudo no mundo pode ser visto como
objetos. Ex.: uma pessoa
 Uma pessoa tem atributos, como nome,
idade, cor dos olhos, altura, peso, etc
 Uma pessoa possui comportamentos,
como caminhar, falar, respirar, etc
 Um objeto é uma entidade que possui
atributos e comportamento

Classe
Uma classe é um modelo para um
objeto
 Um modelo é como um molde a partir
do qual podemos criar vários objetos
 À essa criação de objetos chamamos de
instanciação
 Instanciação é usar uma classe para
construir ou alocar um objeto em
memória

Classe

Veja como a classe Estrela funciona
como modelo para criar vários objetos
Estrela:
Classe
Objetos criados a partir de uma classe
são chamados instâncias dessa classe
 Temos que projetar a classe antes de
instanciar o(s) objeto(s)
 A classe define os atributos e métodos
que cada objeto terá
 Cada objeto instanciado terá seus
próprios atributos e métodos

Atributos = Variáveis





Atributos são dados carregados por cada
instância de uma determinada classe
Também são chamados de variáveis da
instância
Cada instância possui sua própria cópia de
atributos, independente de outra instância
da mesma classe
Atributos podem ser qualquer coisa, até
mesmo instâncias de outras classes!
Para não confundir os atributos da classe
com variáveis locais, usamos this
Métodos = Funções
Métodos são funções definidas dentro
de uma classe
 São usados para realizar operações
com os atributos da classe
 Indicam comportamento do objeto: o
que ele pode fazer?
 Métodos fornecem modularidade aos
nossos programas

Método Construtor
O método construtor é um método
especial que é chamado no momento
em que a classe é instanciada
 A definição do método construtor é
opcional
 O construtor deve ter o mesmo nome
que a classe
 O construtor não retorna valor

Método Construtor
O objetivo do método construtor é a
inicialização de atributos
 O método construtor pode receber
parâmetros, e estes deverão ser
passados no momento da inicialização
 Construtor é um método, e por isso
pode ser sobrecarregado também
 Encadeamento de construtores permite
chamar um construtor (sobrecarga) a
partir de outro construtor

Modificadores de Acesso
Modificadores de acesso configuram a
visibilidade de atributos e métodos
 C# tem 4 modificadores de acesso:
 public: podem ser acessados de
qualquer lugar
 private: podem ser acessados
apenas pela própria classe

Modificadores de Acesso
protected: podem ser acessados
apenas pela própria classe, pelas
classes ancestrais e descendentes
 internal: podem ser acessados
apenas pelo mesmo assembly (EXE ou
DLL)
 Por padrão, todos os membros são
private

Encapsulamento
Uma das principais vantagens do uso de
programação orientada a objetos, é que o
objeto não precisa revelar todos os seus
atributos e métodos
 Em um bom projeto OO, um objeto só
deve revelar os atributos e métodos que
outros objetos devem ter para interagir
com ele
 Os detalhes não pertinentes para a
utilização do objeto devem estar ocultos de
todos os outros objetos

Encapsulamento
Encapsulamento significa juntar o
programa em partes, o mais isoladas
possível
 Quanto mais independente cada parte
for de outra parte, mais fácil é a
manutenção
 Com isso o software se torna mais
flexível, fácil de modificar e de criar
novas implementações

Encapsulamento
Encapsulamento = ocultar o máximo
possível
 Defensores mais radicais do
encapsulamento dizem que todos os
atributos devem estar ocultos
 Para poder acessar cada atributo é
necessário usar dois métodos, um get e
outro set

Encapsulamento

Veja abaixo um exemplo de diagrama
de classe
Propriedades
O encapsulamento puro prega que
todos os atributos devem ser privados
 Isso garante a segurança dos atributos
do objeto, pois obriga o programador a
criar métodos para outras classes
acessarem os atributos
 Os métodos são normalmente
chamados de:

 GetXYZ, para ler o atributo XYZ
 SetXYZ, para escrever no atributo XYZ
Propriedades
Com isso podemos dar permissão de
leitura a um atributo, mas não de escrita
 Propriedades são membros especiais
de uma classe que evitam esses
métodos GetXYZ e SetXYZ repetitivos
 Propriedades são usadas como se
fossem atributos, e declaradas como se
fossem métodos
 Usa-se as palavras reservadas get, set
e value

Propriedades
Dessa forma, pode ser feito um cálculo
ou processamento na leitura e na
escrita de atributos
 Propriedades garantem a segurança e a
consistência dos atributos de uma
classe
 Mesmo assim, mantém fácil acesso aos
atributos, como se eles fossem variáveis
públicas normais

Herança
Uma das coisas mais importantes que
um programador precisa ter em mente é
a reutilização de código
 Programação procedural permite a
reutilização de funções e procedimentos
 Programação orientada a objetos
permite a reutilização de classes,
através de um mecanismo chamado
herança

Herança
Herança descreve um relacionamento
entre classes
 Uma classe copia (ou herda) todas as
propriedades, atributos e métodos de
outra classe
 A ideia é estender a funcionalidade
 Herança define um relacionamento de:

 Especialização
 Generalização
Herança

A classe que cede os membros é
chamada de:
 Superclasse
 Classe base
 Classe pai

A classe que recebe os membros é
chamada de:
 Subclasse
 Classe derivada
 Classe filho
Herança
Usando herança, podemos criar novas
classes a partir de classes já existentes
 Herança é muito usada para acessar
bibliotecas ou componentes
 Benefícios da herança:

 Reaproveitamento de código
 Redução da complexidade

O construtor da classe filha pode chamar o
construtor da classe pai usando a palavra
chave base
Download

Slides - William Ivanski