Você está na página 1de 22

Apostila 05

[Linguagens de Programao Orientada a Objeto LPOO] Curso: Tecnologia em Sistemas de Informao TSI

Professor Msc Rafael Soares

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Herana Trabalhar com herana em C# definir uma classe base (Pai) tambm conhecida como superclasse, e a partir dela definir as classes intermedirias (filhas) que tero as mesmas caractersticas da classe base (Pai). Neste caso podemos dizer que em linguagem de programao orientada a objetos a classe herda caractersticas comuns da classe principal. A codificao em C# realizada da seguinte forma: Class <Nome da Classe Filha>:<Nome da Classe Pai> Em C# no existe herana mltipla para as classes, ou seja, cada classe s pode herdar de uma classe e no mais do que de uma. Vamos criar um exemplo prtico. Para isto, inicie o Visual C# 2010 Ultimate e crie um novo projeto do tipo WindowsFormsApplication, no campo Name: digite HerancaVisual, conforme figura abaixo:

Figura 1

Clique no boto OK para criar o projeto. V at a janela Solution Explorer, clique com o boto direito do mouse sobre o Fom1.cs e renomeie para frmHeranca.cs, conforme figura abaixo:

Professor Msc Rafael Soares

Pgina |2

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Figura 2

Em seguida, pressione a tecla Enter, talvez aparea uma mensagem perguntando se voc quer realmente alterar o nome do objeto, conforme figura abaixo:

Figura 3-repetir figura 22

Clique no boto Sim. Em seguida repita o mesmo procedimento e renomeie o arquivo Program.cs para Principal.cs, conforme figura abaixo:

Professor Msc Rafael Soares

Pgina |3

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Em seguida, pressione a tecla Enter, talvez aparea uma mensagem perguntando se voc quer realmente alterar o nome do objeto, conforme figura abaixo:

Clique no boto Sim. Em seguida adicione mais duas classes Funcionario.cs e Pessoa.cs. Para isto v at o menu Project, em seguida clique no submenu Add Class..., conforme figura abaixo:

Professor Msc Rafael Soares

Pgina |4

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Figura 4-repetir a figura 23

Ou ainda na janela do Solution Explorer, clique com o boto direito do mouse sobre o projeto HerancaVisual, em seguida selecione o item de menu Add, em seguida selecione o item de menu Class..., conforme figura abaixo:

Professor Msc Rafael Soares

Pgina |5

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Figura 5

Na janela que abre, digite no campo Name: Pessoa.cs, conforme figura abaixo:

Figura 6

Em seguida clique no boto Add. Repita o procedimento acima para inserir a classe Funcionario.cs. Abra a janela Solution Explorer e verifique se as suas configuraes esto conforme mostra a figura abaixo:

Professor Msc Rafael Soares

Pgina |6

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Ainda na janela Solution Explorer, clique duas vezes sobre o objeto frmHeranca.cs, em seguida clique sobre o formulrio e v at a janela propriedades e altere as configuraes de acordo com a tabela abaixo: Propriedade Name Font FormBorderStyle MaximizeBox Size StartPosition Text Valor frmHeranca Verdana; 12pt; stvle=Bold Fixed3D False 590; 297 CenterScreen Herana em C#

Em seguida insira um objeto Label1, e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 41;17 Nome:

Em seguida insira um objeto Label2, e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 11;51 Endereo:

Em seguida insira um objeto Label3, e altere sua propriedade conforme tabela abaixo:
Professor Msc Rafael Soares Pgina |7

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Propriedade Location Text

Valor 30;82 Cidade:

Em seguida insira um objeto Label4, e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 13;111 Telefone:

Em seguida insira um objeto Label5, e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 28;141 Funo:

Em seguida insira um objeto Label6, e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 31;173 Salrio:

Em seguida insira um objeto TextBox1, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location MaxLenght Size Valor txtNome 111; 10 150 445; 26

Em seguida insira um objeto TextBox2, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location MaxLenght Size Valor txtEndereco 111; 42 150 445; 26

Em seguida insira um objeto TextBox3, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location MaxLenght Size Valor txtCidade 111; 73 50 445; 26

Em seguida insira um objeto TextBox4, e altere sua propriedade conforme tabela abaixo:
Professor Msc Rafael Soares Pgina |8

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Propriedade Name Location MaxLenght Size

Valor txtFuncao 111; 138 30 238; 26

Em seguida insira um objeto maskedTextBox1, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location Mask Size Valor mtbFone 111; 106 9999-9999 100; 26

Em seguida insira um objeto maskedTextBox2, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location Mask Size Valor mtbSalario 111; 170 999,999.99 100; 26

Em seguida insira um objeto Button1, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location Size Text Valor btnProcessar 32; 219 100; 27 &Processar

Em seguida insira um objeto Button2, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location Size Text Valor btnCancela 228; 219 111; 27 &Cancelar

Em seguida insira um objeto Button3, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location Size Text
Professor Msc Rafael Soares

Valor btnSair 446; 219 111; 27 &Sair


Pgina |9

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Salve o projeto e veja como seu formulrio deve ficar conforme figura abaixo:

Figura 7

V at a janela Solution Explorer e clique duas vezes sobre a classe Pessoa.cs e digite o cdigo abaixo, observe os comentrios: using using using using System; System.Collections.Generic; System.Linq; System.Text;

namespace HerancaVisual { class Pessoa { //Declarao das variveis privadas private string nome; private string endereco; private string cidade; private string fone; //mtodo para definir o nome da pessoa public void setNome(string nome) { this.nome = nome; } //mtodo para definir o endereo da pessoa public void setEndereco(string endereco)
Professor Msc Rafael Soares P g i n a | 10

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

{ this.endereco = endereco; } //mtodo para definir a cidade da pessoa public void setCidade(string cidade) { this.cidade = cidade; } //mtodo para definir o telefone da pessoa public void setFone(string fone) { this.fone = fone; } //mtodo para obter o nome da pessoa public string getNome() { return this.nome; } //mtodo para obter o endereo da pessoa public string getEndereco() { return this.endereco; } //mtodo para obter a cidade da pessoa public string getCidade() { return this.cidade; } //mtodo para obter o telefone da pessoa public string getFone() { return this.fone; } } } V at a janela Solution Explorer e clique duas vezes sobre a classe Funcionario.cs e digite o cdigo abaixo, observe os comentrios: sing System; using System.Collections.Generic; using System.Linq;
Professor Msc Rafael Soares P g i n a | 11

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

using System.Text; namespace HerancaVisual { class Funcionario : Pessoa // A classe Funcionrio herda as caractersticas da classe Pessoa { //Declarao das variveis privadas private double salario; private string funcao; //mtodo para definir o salrio do funcionrio public void setSalario(double salario) { this.salario = salario; } //mtodo para definir a funo do funcionrio public void setFuncao(string funcao) { this.funcao = funcao; } //mtodo para obter o salrio do funcionrio public double getSalario() { return this.salario; } //mtodo para obter a funo do funcionrio public string getFuncao() { return this.funcao; } } } V at a janela Solution Explorer e clique duas vezes sobre o formulrio frmHeranca.cs, logo em seguida clique duas vezes sobre o boto Processar e digite o cdigo abaixo, observe os comentrios: private void btnProcessar_Click(object sender, EventArgs e) { //Cria instncia para a classe Funcionrio que herda caractersticas da classe pessoa Funcionario f = new Funcionario(); // Passa o contedo digitado para as variveis definidas nos set's
Professor Msc Rafael Soares P g i n a | 12

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

f.setNome(txtNome.Text); f.setEndereco(txtEndereco.Text); f.setCidade(txtCidade.Text); f.setFone(mtbFone.Text); f.setFuncao(txtFuncao.Text); try { f.setSalario(double.Parse(mtbSalario.Text)); string saida = "Nome..........: " + f.getNome().ToUpper() + "\n" + "Endereo.....: " + f.getEndereco().ToUpper() + "\n" + "Cidade........: " + f.getCidade().ToUpper() + "\n" + "Telefone...........: " + f.getFone() + "\n" + "Salrio. .......: " + f.getSalario().ToString(); MessageBox.Show(saida, "**** SADA DOS DADOS ****", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception erro) { MessageBox.Show(erro.Message, "**** ERRO DE ENTRADA ****", MessageBoxButtons.OK, MessageBoxIcon.Error); } } Volte ao design do formulrio frmHeranca.cs[Design], em seguida clique duas vezes sobre o boto Cancelar e digite o cdigo abaixo, observe os comentrios: private void btnCancela_Click(object sender, EventArgs e) { txtCidade.Clear(); txtEndereco.Clear(); mtbFone.Clear(); txtFuncao.Clear(); txtNome.Clear(); mtbSalario.Clear(); txtNome.Focus(); } Volte ao design do formulrio frmHeranca.cs[Design], em seguida clique duas vezes sobre o boto Sair e digite o cdigo abaixo, observe os comentrios: private void btnSair_Click(object sender, EventArgs e) { string texto = "Deseja sair do programa ?"; string titulo = "**** FINALIZANDO ****"; if (MessageBox.Show(texto, titulo, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Professor Msc Rafael Soares P g i n a | 13

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

{ this.Close(); } } Salve o projeto e execute a aplicao para conferir os resultados. Veja um exemplo conforme figura abaixo:

Figura 8

Polimorfismo Em C# polimorfismo significa "muitas formas", que permite invocar mtodos derivados de uma classe base durante a execuo da aplicao. Em outras palavras, so dois ou mais objetos que podem responder a uma mesma mensagem. Funciona muito bem quando voc precisa atribuir um grupo de objetos, invocando cada um dos seus mtodos. Eles no tm necessariamente que ser do mesmo tipo. No entanto, se eles estiverem relacionados por heranas, voc pode adicion-las ao tipo herdado. Parece muito complicado? Vejamos na prtica o funcionamento deste conceito. Inicie o Visual C# 2010 Ultimate e crie um novo projeto do tipo WindowsFormsApplication, no campo Name: digite PolimorfismoVisual, conforme figura abaixo:

Professor Msc Rafael Soares

P g i n a | 14

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Figura 9

Clique no boto OK para criar o projeto. V at a janela Solution Explorer, clique com o boto direito do mouse sobre o Fom1.cs e renomeie para frmPolimorfismoVisual.cs, conforme figura abaixo:

Figura 10

Em seguida, pressione a tecla Enter, talvez aparea uma mensagem perguntando se voc quer realmente alterar o nome do formulrio, conforme figura abaixo:
Professor Msc Rafael Soares P g i n a | 15

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Figura 11-repetir figura 22

Clique no boto Sim. Em seguida repita o mesmo procedimento e renomeie o arquivo Program.cs para Principal.cs. Em seguida adicione mais trs classes ao projeto atual Carro.cs, Acelerar.cs, Parar.cs. Para isto v at o menu Project, em seguida clique no submenu Add Class..., conforme figura abaixo:

Figura 12-repetir a figura 23

Na janela que abre, digite no campo Name: Carro.cs, conforme figura abaixo:

Professor Msc Rafael Soares

P g i n a | 16

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Figura 13

Em seguida clique no boto Add. Repita o procedimento acima para inserir as classes Acelerar.cs e Parar.cs. Verifique se a sua janela Solution Explorer est de acordo com o que mostra a figura abaixo:

Professor Msc Rafael Soares

P g i n a | 17

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Na janela Solution Explorer, clique duas vezes sobre o formulrio frmPolimorfismoVisual.cs, em seguida clique sobre o formulrio e v at a janela propriedades e altere as configuraes de acordo com a tabela abaixo: Propriedade Name Font FormBorderStyle MaximizeBox Size StartPosition Text Valor frmPolimorfismoVisual Verdana; 12pt; style=Bold Fixed3D False 359; 297 CenterScreen Herana em C#

Em seguida abra a janela Toobox e insira um objeto GroupBox, e altere sua propriedade conforme tabela abaixo: Propriedade Location Size Text Valor 58; 12 234; 121 Opes para o carro

Ainda com a janela Toolbox aberta, insira um objeto RadioButton1, dentro do objeto GroupBox e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 14; 38 Acelerando

Ainda com a janela Toolbox aberta, insira um objeto RadioButton2, dentro do objeto GroupBox e altere sua propriedade conforme tabela abaixo: Propriedade Location Text Valor 14; 80 Parando

Ainda com a janela Toolbox aberta, insira um objeto Button1 dentro do formulrio, e altere sua propriedade conforme tabela abaixo: Propriedade Name Location Size Text Valor btnClique 22; 156 83; 36 &Clique

Ainda com a janela Toolbox aberta, insira um objeto Button2 dentro do formulrio, e altere sua propriedade conforme tabela abaixo:
Professor Msc Rafael Soares P g i n a | 18

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Propriedade Name Location Size Text

Valor btnSair 188; 156 83; 36 &Sair

Aps todas essas configuraes, voc deve ter um formulrio parecido como o da figura abaixo:

Figura 14

V at a janela Solution Explorer e clique duas vezes sobre a classe Carro.cs, e digite o cdigo abaixo, observe os comentrios: using using using using System; System.Collections.Generic; System.Linq; System.Text;

namespace PolimorfismoVisual { //Cria a classe abstrata e com o evento ao public abstract class Carro { public abstract bool acao(); } } V at a janela Solution Explorer e clique duas vezes sobre classe Acelerar.cs, e digite o cdigo abaixo, observe os comentrios:
Professor Msc Rafael Soares P g i n a | 19

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

using using using using using

System; System.Collections.Generic; System.Linq; System.Text; System.Windows.Forms;

namespace PolimorfismoVisual { class Acelerar : Carro // A classe acelera herdar caracterstica da classe Carro { public override bool acao()// acao passa a ser mtodo da classe carro { MessageBox.Show("Acelerando o carro....", "*** Acelerando o carro ***", MessageBoxButtons.OK, MessageBoxIcon.Information); return true; } } } V at a janela Solution Explorer e clique duas vezes sobre classe Parar.cs, e digite o cdigo abaixo, observe os comentrios: using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Windows.Forms;

namespace PolimorfismoVisual { class Parar : Carro//A classe parar herda as caractersticas da lasse carro { public override bool acao()// acao mtodo da classe carro { MessageBox.Show("Parando o carro ....", "*** Parando o carro ***", MessageBoxButtons.OK, MessageBoxIcon.Information); return true; } } } V at a janela Solution Explorer e clique duas vezes no formulrio frmPolimorfismoVisual.cs, em seguida clique duas vezes sobre o boto Clique e digite o
Professor Msc Rafael Soares P g i n a | 20

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

cdigo abaixo, observe os comentrios: private void btnClique_Click(object sender, EventArgs e) { if (this.radioButton1.Checked) { movimento(new Acelerar()); } else { movimento(new Parar()); } } Volte ao formulrio frmPolimorfismoVisual.cs, em seguida clique duas vezes sobre o boto Sair e digite o cdigo abaixo, observe os comentrios: private void btnSair_Click(object sender, EventArgs e) { string Texto = "Deseja Sair ?"; string Titulo = "*** Sair do Sistema***"; if (MessageBox.Show(Texto, Titulo, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { this.Close(); } } Em seguida crie um procedimento logo abaixo do cdigo do boto Sair e digite o cdigo abaixo, observe os comentrios: public bool movimento(Carro veiculo)//Procedimento para referenciar o objeto Carro { return veiculo.acao(); } Veja como ficou este procedimento conforme figura abaixo:

Professor Msc Rafael Soares

P g i n a | 21

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Observe que, ao selcionar a opo Acelerando e logo em seguida clicar no boto Clique, a mensagem correspondente exibida na MessageBox e o mesmo ocorre ao clicar na outra opo. So classes diferentes, porm de um mesmo grupo que herdam caractersticas da classe Carro.cs e tm como mtodo em classes distintas a mesma ao.

Professor Msc Rafael Soares

P g i n a | 22

Você também pode gostar