03 - orientação a objetos e classes em c# v1.0
TRANSCRIPT
![Page 1: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/1.jpg)
César Augusto Pessôa
![Page 2: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/2.jpg)
Sumário
Objetivos
Programação estruturada
Programação orientada a objetos
Paradigmas da orientação a objetos
Criando uma classe em C#
Exercícios práticos no Visual Studio
![Page 3: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/3.jpg)
Objetivos
Ao final da aula, os alunos saberão
identificar as principais diferenças
entre a programação estruturada e a
programação orientada a objetos.
Apresentar aos alunos uma
introdução a linguagem C# e a IDE
Visual Studio.
![Page 4: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/4.jpg)
Programação estruturada
Forma de programação onde todos os programas são desenvolvidos sob três estruturas: sequência, decisão e iteração (ou repetição).
Orientada a criação de estruturas simples nos programas, usando as sub-rotinas e as funções. Foi a forma dominante na criação de software anterior à programação orientada por objetos.
![Page 5: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/5.jpg)
Programação estruturada
![Page 6: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/6.jpg)
O que é um objeto
![Page 7: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/7.jpg)
Programação orientada a objetos
A primeira coisa que devemos ter em
mente é que, tudo em nosso cotidiano
é um objeto!
E... Cada objeto está inserido em um
contexto, também chamado de
domínio.
Objeto
Domínio
![Page 8: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/8.jpg)
Programação orientada a objetos
Considerando a chave abaixo como
um objeto, podemos ressaltar
algumas características:
Cor
Tamanho
Material
Fabricante
TipoObjeto Chave
![Page 9: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/9.jpg)
Quantos tipos de chave existem?
![Page 10: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/10.jpg)
Objeto Pessoa
Podemos dizer que uma pessoa é um objeto porque toda a pessoa possui características muito parecidas, porém, cada pessoa é única!
Cor do cabelo
Tipo do cabelo
Cor dos olhos
Formato dos olhos
Dimensão do sorriso
Personalidade
![Page 11: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/11.jpg)
Objetos do tipo Pessoa
![Page 12: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/12.jpg)
Classes Os objetos de nosso mundo, nosso domínio,
serão identificados dentro de nossos
programas como classes.
As classes, como representantes dos
objetos, também possuem comportamentos
e características.
As características de um objeto serão chamadas
atributos ou propriedades.
O comportamento de um objeto será definido por
meio de métodos ou eventos.
![Page 13: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/13.jpg)
Instanciando um classe As classes descrevem como os objetos são
e como se comportam, porém, ela em si não
pode ser utilizada para armazenamento de
informações.
Uma classe nada mais é do que um tipo de
dados personalizado, ou melhor, adequado
para trazer um objeto do mundo real para o
software.
Para utilizar este tipo de dados, é necessário
instanciar um objeto com base nesta classe.
![Page 14: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/14.jpg)
Paradigmas da POO Herança
Ocorre quando um objeto possui características e
ações oriundas de outro objeto superior. Por
exemplo, quando um filho herda os olhos e
temperamento do pai.
![Page 15: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/15.jpg)
Paradigmas da POO Encapsulamento
São informações presentes em um objeto e que
estão ocultas para o mundo exterior, somente
sendo possível acessá-las por meio de
interações permitidas pelo objeto. Por exemplo,
quando abrimos uma janela e as pessoas
conseguem enxergar o que estamos fazendo
dentro de nossa casa.
![Page 16: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/16.jpg)
Paradigmas da POO Encapsulamento
Métodos
Objeto
PessoaPensar
Andar
Comer
Chorar
Dirigir
Dormir
Sorrir
![Page 17: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/17.jpg)
Paradigmas da POO Encapsulamento
Atributos ou
Propriedades
Nome
Endereço
Telefone
Idade
Gênero
Profissão
Ler
Telefone
Ler
Endereço
Ler
Idade
Ler
Nome
Ler
Profissão
Ler
Gênero
![Page 18: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/18.jpg)
Paradigmas da POO Encapsulamento
Não sabemos exatamente como as coisas acontecem, mas podemos nos relacionar com os objetos para descobrir e obter mais informações conforme o necessário.
E é esta exatamente a maior vantagem do encapsulamento! Eu não preciso conhecer as regras específicas de cada objeto, apenas preciso saber como me relacionar com ele.
“A ignorância é uma espécie de bênção. Se você não sabe, não existe dor.” – John Lennon
![Page 19: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/19.jpg)
Paradigmas da POO Abstração
Ocorre quando são definidas características
comuns a um grupo de objetos, sendo possível
encontrar as mesmas características em objetos
diferentes. Por exemplo, objetos cortantes.
![Page 20: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/20.jpg)
Paradigmas da POO Polimorfismo
Literalmente significa “muitas formas”. Ocorre
quando uma mesma ação pode ser executada
por diversos objetos diferentes e de formas
diferentes. Por exemplo, podemos dizer que um
pássaro voa, assim como um avião também voa.
Entretanto, ambos são objetos diferentes que
voam de forma diferente.
![Page 21: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/21.jpg)
Interfaces Uma interface serve para identificar um
comportamento obrigatório de uma classe.
Por exemplo, no caso do pássaro e do
avião, ambos devem possuir o método voar,
porém, realizados de forma diferente. Para
isso pode-se utilizar a interface IVoador.
![Page 22: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/22.jpg)
Interfaces Podemos então declarar um conjunto de
comportamentos que nossos objetos avião e
pássaro tem em comum.
O próximo passo, é construir uma interface
que absorva estes comportamentos
(métodos), e possa ser utilizada por ambos
os objetos (classes).
![Page 23: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/23.jpg)
Classes abstratas Recebem este nome devido ao seu alto nível
de abstração, ou seja, a grande distância entre sua implementação e o objeto real.
Por exemplo, podemos ter uma classe abstrata denominada ser vivo.
Com certeza esta classe possui atributos e métodos que podemos utilizar para pessoas, cachorros, pássaros, gatos, etc.
Porém seria muito difícil utilizarmos um objeto tão abrangente. Para cadastrar uma pessoa, por exemplo, precisaríamos de informações específicas, além do básico “ser vivo”.
![Page 24: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/24.jpg)
Classes abstratas
![Page 25: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/25.jpg)
Herança Mantendo o nosso exemplo do objeto ser
vivo e se considerarmos ele como abaixo:
Atributos:
Altura
Peso
Idade
Métodos
Respirar
Comer
Descansar
![Page 26: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/26.jpg)
Herança Uma classe pessoa, poderia herdar
características da classe ser vivo.
Da mesma forma se criássemos as classes
cachorro, gato, rato e peixe. Todas poderiam
herdar as características e comportamentos
da classe ser vivo, evitando assim que cada
classe tenha que repetir seus atributos e
métodos.
![Page 27: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/27.jpg)
Herança Se uma classe abstrata não pode ser
instanciada, então pra que raios ela serve?
![Page 28: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/28.jpg)
Criando uma classe em C#// Bibliotecas utilizadas
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Namespace do projeto
namespace CadastroDePessoas
{
// Classe
public class Pessoa
{
...
}
![Page 29: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/29.jpg)
public class Pessoa
{
private string _nome;
private float _altura, _peso;
private int _idade;
private DateTime _dataNasc;
private int _genero;
// Construtor sem parâmetros
public Pessoa()
{
}
// Construtor com parâmetros
public Pessoa(string nome, float altura, float peso, int idade, DateTime dataNasc, int genero)
{
this._nome = nome;
this._altura = altura;
this._peso = peso;
this._idade = idade;
this._dataNasc = dataNasc;
this._genero = genero;
}
Criando uma classe em C#
Declaração das variáveis
privadas - atributos
Declaração dos construtores
do objeto
![Page 30: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/30.jpg)
Encapsulamento em C#public string Nome
{
get{return _nome;}
set{_nome = value;}
}
public float Altura
{
get { return this._altura; }
set { this._altura = value; }
}
Encapsulamento dos
atributos
Método de leitura
Método de escrita
Método de leitura
Método de escrita
![Page 31: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/31.jpg)
Encapsulamento em C#public DateTime DataNasc
{
get { return this._dataNasc; }
set { this._dataNasc = value; }
}
public int Idade
{
get
{
this._idade = DateTime.Now.Year - this._dataNasc.Year;
return this._idade;
}
}
Método de leitura
Método de escrita
Método de leitura – vantagem do encapsulamento
as demais classes não sabem “como” a idade é calculada
Não possui
método de escrita
![Page 32: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/32.jpg)
Instanciamento de objetos Para instanciar um objeto é necessário
utilizar a sua “receita”, a sua classe.
A classe determina os métodos e atributos
de um objeto, como o mesmo será
construído.
Pessoa objPessoa = new Pessoa();
Nome da variável
(objeto criado)
Aqui será definida a “receita”, o construtor
que será utilizado para instanciar o objeto
A palavra new determinar que será criado um novo
objeto do tipo Pessoa e alocado em memóriaTipo de dados
(nome da classe)
![Page 33: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/33.jpg)
![Page 34: 03 - Orientação a objetos e classes em C# v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052418/5878d6ae1a28ab917a8b640b/html5/thumbnails/34.jpg)
Dúvidas?