Escolar Documentos
Profissional Documentos
Cultura Documentos
A OBJETOS COM C#
Figura 20 – OOP
98
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
ABSTRAÇÃO
ENCAPSULAMENTO
99
C# PARA INICIANTES
HERANÇA
POLIMORFISMO
100
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
Exemplo do código:
classe Mamifero
Locomocao() // ainda a ser codificado na herança
Mamifero ObjetoMamifero;
101
C# PARA INICIANTES
using System;
namespace MinhaPrimeiraClasse
{
class ProgramaPrincipal
{
static void Main(string[] args)
{
102
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
//Declaramos uma variavel do tipo string (texto)
String Digitado = new String(“”);
//Solicitamos que o usuario digite alguma
coisa e
//armazene na variavel criada
Digitado = Console.ReadLine();
//Mostramos o que foi digitado
Console.WriteLine(Digitado);
}
}
using System;
namespace MinhaPrimeiraClasse
{
class Pr ogramaPrincipal
{
static void Main(string[] args)
{
//Criamos o objeto Pedido herdado da clase
InteracaoUsuario
InteracaoUsuario Pedido = new InteracaoUsu
ario();
//Invocamos os metodos do objeto Pedido
herdado da classe mãe InteracaoUsuario
103
C# PARA INICIANTES
var Digitado = Pedido.SolicitarDigitacao();
Pedido.MostrarDigitacao( Digitado);
}
}
//Criamos a Classe InteracaoUsuario com dois
metodos principais
//Método que solicita a digitaç ão de algo no
terminal
//Método que mostra o que foi digitado
class InteracaoUsuario
{
public string SolicitarDigitacao()
{
return Console.ReadLine();
}
public void MostrarDigitacao( string Digitado)
{
Console.WriteLine(Digitado);
}
}
}
104
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
GET e SET.
Vamos ao exemplo com GET e SET. Na pasta CAP5, crie uma sub-
-pasta OlaMundo_GetSet e o arquivo Program.cs. O código a seguir
abaixo é idêntico ao anterior, só que agora realizamos algumas
modificações. Primeiro, abstraímos ainda mais a classe InteracaoU-
suario fazendo com que ela não apenas receba e imprima o valor
digitado no console, realizando assim a operação completa.
using System;
namespace MinhaPrimeiraClasse
{
class Pr ogramaPrincipal
{
static void Main(string[] args)
{
//Criamos o objeto Pedido herdado da clase
InteracaoUsuario
InteracaoUsuario Pedido = new InteracaoUsu
ario();
//Invocamos os metodos do objeto Pedido
herdado da classe mãe Interacao Usuario
Pedido.SolicitarDigitacao();
105
C# PARA INICIANTES
Pedido.MostrarDigitacao();
//Recupero pelo metodo GET o valor da
mensgaem digitada para futura manipulação
var Digitado = Pedido.Mensagem;
//Escrevo a nova mensagem colocando toda a
mensagem em Maiuscula
Console. WriteLine(“Nova Digitação sem Espaç
os -> “ + Digitado.ToUpper());
}
}
//Criamos a Classe InteracaoUsuario com dois
metodos principais
//Metodo que solicita a digitacao de algo no
terminal
//Metodo que mostra o que retorna o que foi
digitado
class InteracaoUsuario
{
private string _MensagemDigitada;
public string Mensagem
{
get
{
return _MensagemDigitada;
}
set
{
_MensagemDigitada = value;
}
}
public void SolicitarDigitacao()
{
_MensagemDigitada = Console.ReadLine();
106
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
}
public void MostrarDigitacao( )
{
Console.WriteLine(_MensagemDigitada);
}
}
}
using System;
//Classe InteracaoUsuario com d ois metodos
principais
//Metodo que solicita a digitacao de algo no
terminal
//Metodo que mostra o que foi digitado
namespace MinhaClasseUsuario
{
public class InteracaoUsuario
{
private string _MensagemDigitada;
public string Mensagem
{
107
C# PARA INICIANTES
get
{ return _MensagemDigitada; }
set
{ _MensagemDigitada = value; }
}
public void SolicitarDigitacao()
{
_MensagemDigitada = Console.ReadLine();
}
public void MostrarDigitacao( )
{
Console.WriteLine(_MensagemDigitada);
}
}
}
using System;
using MinhaClasseUsuario;
namespace MinhaPrimeiraClasse
{
class ProgramaPrincipal
{
108
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
static void Main(string[] args)
{
//Criamos o objeto Pedido herdado da clase
InteracaoUsuario
InteracaoUsuario Pedido = new InteracaoUsu
ario();
//Invocamos os metodos do objeto Pedido
herdado da classe mãe InteracaoUsuario
Pedido.SolicitarDigitacao();
Pedido.MostrarDigitacao();
//Recuperamos pelo metodo GET o valor da
mensgaem digitada para futura manipulação
var Digitado = Pedido.Mensagem;
//Escrevemos a nova mensagem colocando
toda a mensagem em Maiuscula
Console. WriteLine(“Nova Digitação sem Espaç
os -> “ + Digitado.ToUpper());
}
}
}
109
C# PARA INICIANTES
110
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
Biblioteca
public class Biblioteca
{
private string _Titulo; //recebe o titulo do livro
private string _Autor; //
recebe o nome do autor do Livro
private int _Paginas; ///recebe o númerp de
paginas que o Livro contem
private bool _Status; //recebe saindo (FALSE) ou
entrando (TRUE) na biblioteca
public Biblioteca() //Construtor sem parametros
{
}
//Construtor com parametros
public Biblioteca( string Titulo, string Autor, in
t Paginas, bool Status)
{
_Titulo = Titulo;
_Autor = Autor;
_Paginas = Paginas;
_Status = Status;
}
public string Titulo //Metodo para acesso a
propriedade Titulo da classe
{
get {return _Titulo;} set { _Titulo = value;}
}
public string Autor
{
get {return _Autor;} set { _Autor = value;}
}
public int Paginas
{
get { return _Paginas;} set { _Paginas = value;}
111
C# PARA INICIANTES
}
public bool Status
{
get {return _Status;} set { _Status = value;}
}
}
}
using System;
using Libraryclass;
namespace Biblioteca_V1
{
class Pr ogram
{
static void Main(string[] args)
{
//Inicializando a classe com o construtor nulo
Biblioteca MinhaBiblioteca = new Biblioteca();
//Por isso a necessidade de setar o valor de
112
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
cada propriedade
MinhaBiblioteca.Autor = “Des Dearlove”;
MinhaBiblioteca.Titulo = “O Estilo Bill Gates
de Gerir”;
MinhaBiblioteca.Paginas = 203;
MinhaBiblioteca.Status = true;
//imprimindo os valores da classe
Console.WriteLine(“Autor: “+ MinhaBibliotec
a.Autor );
Console.WriteLine(“Titulo: “+ MinhaBiblioteca.
Titulo);
Console.WriteLine(“Paginas: “+ MinhaBibliote
ca.Paginas);
Console. WriteLine(“Status: “+MinhaBibliotec
a.Status);
Console.WriteLine();
//Inicializando a classe com o novo construtor
Biblioteca MeusLivros = new Biblioteca( “Jua
n Garcia Sola”, “Linguagem C”, 296, true);
//imprimindo os valores da classe
Console.WriteLine(“Autor: “+ MeusLivros.
Autor);
Console.WriteLine(“Titulo: “+ MeusLivros.Titulo);
Console. WriteLine(“Paginas: “+MeusLivros.
Paginas);
Console.WriteLine(“Status: “+ MeusLivros.
Status);
Console.WriteLine();
}
}
}
113
C# PARA INICIANTES
MinhaBiblioteca.Autor = “Des Dearlove”;
MinhaBiblioteca.Titulo = “O Estilo Bill Gates de Gerir”;
MinhaBiblioteca.Paginas = 203;
MinhaBiblioteca.Status = true;
Até aqui nosso programa está indo muito bem. Entendemos so-
114
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
public class Revistas : Biblioteca
//namespace que irá conter a classe de controle de
115
C# PARA INICIANTES
livros e seus metodos
namespace Libraryclass
{
//nova classe para controlar as revistas
public class Revistas : Biblioteca
{
//Propriedades da Classe
private int _MesPublicacao;
private int _AnoPublicacao;
//Construtor da classe
public Revistas(int MesPublicacao, int AnoPubli
cacao)
{
_MesPublicacao = MesPublicacao;
_AnoPublicacao = AnoPublicacao;
}
public int MesPublicacao //Metodo para acesso
a propriedade da classe
{
ge t {return _MesPublicacao;} set { _
MesPublicacao = value;}
}
public int AnoPublicacao
{
get {return _AnoPublicacao;} set { _
AnoPublicacao = value;}
}
}
//principal classe de controle de livros na
Biblioteca
public class Biblioteca
{
private string _Titulo; //recebra o titulo do livro
private string _Autor; //recebera o nome do
autor do Livro
private int _Paginas; ///receberá o númerp de
paginas que o Livro contem
116
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
}
//Construtor com parametros
//note que o nome do metodo é o mesmo
(sobrecarga)
public Biblioteca( string Titulo, string Autor, in
t Paginas, bool Status)
{
_Titulo = Titulo;
_Autor = Autor;
_Paginas = Paginas;
_Status = Status;
}
public string Titulo //Metodo para acesso a
propriedade da classe “Titulo”
{
get {return _Titulo;} set { _Titulo = value;}
}
public string Autor
{
get {return _Autor;} set { _Autor = value;}
}
public int Paginas
{
get { return _Paginas;} set { _Paginas = value;}
}
public bool Status
{
get {return _Status;} set { _Status = value;}
}
}
}
117
C# PARA INICIANTES
using System;
using static System.Console;
using Libraryclass;
namespace Biblioteca_V2
{
class Program
{
static void Main( string[] args)
{
//inicializando nossa nova classe com herança
Revistas MinhasRevistas = new Revistas( 3, 20
21);
//Inicializando as outas propriedades da
classe que foram herdadas
MinhasRevistas.Autor = “Microsoft”;
MinhasRevistas.Titulo = “MSDN Magazine”;
MinhasRevistas.Paginas = 20;
MinhasRevistas.Status = true;
//imprimindo os valores de minha classe
WriteLine(“Revista Mes: “+ MinhasRevistas.
MesPublicacao);
WriteLine(“Revista Ano: “+ MinhasRevistas.
AnoPublicacao);
WriteLine(“Revista Autor: “+ MinhasRevistas.
Autor);
118
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
//Inicializando nossa classe com o novo
construtor
Biblioteca MeusLivros = new Biblioteca( “Jua
n Garcia Sola”, “Linguagem C”, 296, true);
//imprimindo os valores de minha classe
WriteLine(“Autor: “+ MeusLivros.Autor);
WriteLine(“Titulo: “+MeusLivros.Titulo);
WriteLine(“Paginas: “+MeusLivros. Paginas);
WriteLine(“Status: “+MeusLivros.Status);
WriteLine();
}
119
C# PARA INICIANTES
}
}
//classe para controlar as fotos
public class Fotos : Revistas
{
//Propriedades da Classe
120
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
private string _Tipo;
//neste construtor preciso referenciar a classe
base
//Revistas é uma classe já herdada de Biblioteca
public Fotos( string Tipo) : base (0,0)
{
_Tipo = Tipo;
}
public s tring Tipo //Metodo para acesso a
propriedade da classe
{
get {return _Tipo;} set { _Tipo = value;}
}
}
121
C# PARA INICIANTES
WriteLine(“Foto Paginas: “+MinhasFotos. Paginas);
WriteLine(“Foto Status: “+ MinhasFotos.Status);
WriteLine();
namespace Libraryclass
{
//classe para controlar as fotos
public class Fotos : Revistas
{
//Propriedades da Classe
private string _Tipo;
...
public string Tipo //Metodo para acesso a
propriedade daclasse {
get {return _Tipo;} set { _Tipo = value;}
}
public override void Descarte()
{
this.Titulo = “A Foto foi Destruida”;
}
}
122
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
//nova classe para controlar as revistas
public class Revistas : Biblioteca
{
//Propriedades da Classe
private int _MesPublicacao;
private int _AnoPublicacao;
...
public int AnoPublicacao
{
get {return _AnoPublicacao;} set { _
AnoPublicacao = value;}
}
public override void Descarte()
{
this.Titulo = “A Revista foi Reciclada”;
}
}
//principal classe de controle de livros na
Biblioteca
public class Biblioteca
{
private string _Titulo; //recebra o titulo do livro
...
...
public bool Status
{
get {return _Status;} set { _Status = value;}
}
//Método Descarte
public virtual void Descarte()
123
C# PARA INICIANTES
{
_Titulo = “O Livro foi Doado”;
}
}
}
//Mesmo método com comportamentos diferentes
MeusLivros.Descarte();
WriteLine( “Titulo: “+MeusLivros.Titulo);
MinhasRevistas.Descarte();
WriteLine(“Titulo: “+ MinhasRevistas.Titulo);
MinhasFotos.Descarte();
WriteLine(“Titulo: “+ MinhasFotos. Titulo);
WriteLine();
124
CAPÍTULO 5 - PROGRAMAÇÂO ORIENTADA A OBJETOS COM C#
Revista Mes: 3
Revista Ano: 2021
Revista Autor: Microsoft
Revista Titulo: MSDN Magazine
Revista Paginas: 20
Revista Status: True
Autor: Linguagem C
Titulo: Juan Garcia Sola
Paginas: 296
Status: True
125