programação c# - classes,heranças

34
Projecto Programação II Formação/Explicações Ana Rodrigues Nº 558

Upload: formatium

Post on 09-Aug-2015

48 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Programação C# - Classes,Heranças

Projecto Programação II Formação/Explicações

Ana Rodrigues Nº 558

Page 2: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Índice Breve Descrição: ...................................................................................................................................... 2

UML: ........................................................................................................................................................ 3

Apresentação: ......................................................................................................................................... 4

Form Login(frmLogin): ......................................................................................................................... 4

Form Principal(frmFormacao): ............................................................................................................ 8

Form Principal (Menus): .................................................................................................................... 11

O Que Aprendi com este projecto? ....................................................................................................... 16

• Utilizar a propriedade MDI do Formulário, em que podemos definir um formulário como principal e todos os outros serem visíveis dentro deste. .................................................................. 16

• Utilizar propriedades dos comandos, como: KeyPreview e Comandos, como: KeyDown, onde no formulário do Login substitui o TAB pelo ENTER. ........................................................................ 16

• Fazer uso do Evento Closing do Formulário, poder colocar informação ao utilizador quando fecha um formulário/Aplicação, o que por vezes se torna útil pois pode ser feito sem intenção por parte do utilizador. ............................................................................................................................ 16

• O controlo MasKedTextBox, que ao contrário da TextBox podemos criar uma máscara para o campo, o que se torna bastante útil e pratico para o utilizador. ...................................................... 16

• Código Postal, inseri mascara como em outros campos mas restringi o campo a números, não deixa digitar letras, onde inseri o código no Evento KeyPress do Formulário (frmcodPostal) ......... 16

• Descobri que o erro: C# program that throws typeInitializationException, significa que é alguma da informação do… ............................................................................................................... 17

Conclusão: ............................................................................................................................................. 19

Código Fonte: ........................................................................................................................................ 20

class clsCodigoPostal ............................................................................................................. 20

class clsCursos .......................................................................................................................... 21

class clsFormacao ..................................................................................................................... 22

class clsFormador:clsPessoa ................................................................................................ 24

class clsFormando:clsPessoa ................................................................................................ 25

class clsInscricaoCursos ...................................................................................................... 27

class clsMetodosPagamento .................................................................................................... 29

class clsPessoa .......................................................................................................................... 30

static class Program ............................................................................................................... 33

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 3: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Breve Descrição:

Pretende-se neste trabalho fazer uma gestão de formandos, formadores e respectivas formações/explicações/eventos.

Pretende-se saber em que cursos o aluno se inscreve, assim como a idade, o nível escolar e o educador atribuído para que se possa saber quem é o responsável.

Com toda esta informação, pretende-se obter o que cada formando frequenta e em quantos cursos se encontra inscrito, como também as datas e métodos de pagamento a que se propõe fazer.

Irão ser utilizadas as seguintes classes:

• Pessoa • Códigos Postais • Cursos • Formação • Formador • Formando • Inscrição Cursos • Métodos de Pagamento

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 4: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

UML:

IncricaoCursos

Formacao Formador Formando

Pessoa CodigoPostal

MetodosPagamento

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 5: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Apresentação:

O Sistema de Formação/Explicações tem como objectivo guardar informação sobre cursos e formandos inscritos no mesmo.

Cada formando, é identificado pelo NIF e pode-se inscrever em um ou nos mais variados cursos.

Para poder ter um controlo do sistema, foi criado um Login, ou seja só tem acesso ao sistema quem conhecer as credenciais:

Form Login(frmLogin):

Ao abrir o sistema é despoletada a caixa de Login, onde é pedido o Utilizador e a Password.

Para facilitar o trabalho do utilizador, a tecla Enter após digitar o Utilizador ou a senha funciona como se fosse a tecla TAB, para isso utilizei a Propriedade KeyPreview=True do FrmLogin:

Obtém ou define um valor indicando se o formulário receberá eventos antes do evento que é passado para o controle que tem o foco .

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 6: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Depois utilizei o evento KeyDown:

/** Converte a tecla TAB para Enter no formulário **/ private void frmLogin_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { SelectNextControl(this.ActiveControl, true, false, false, true); } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 7: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Quando o utilizador faz Entrar, se as credenciais estiverem correctas é aberto o Form Principal (frmFormacao), caso haja algum erro, é enviada uma caixa de mensagem a informar e ambas as caixas de texto (Utilizador/Password) são limpas.

/** Verifica se utilizador e password estão correctos, se sim abre o Form Empresa **/ if (txtUtilizador.Text == "ADMIN" && txtPassword.Text == "XPTO") { frmFormacao EMP = new frmFormacao(); utilizador = txtUtilizador.Text; this.Close(); } else /* se não envia uma caixa de mensagem a informar que esta errado e limpa as caixas de texto */ MessageBox.Show("Utilizador ou Password Inválidos", "ATENÇÃO:"); //Limpa as caixas de texto txtUtilizador.Text = ""; txtPassword.Text = ""; //Coloca o cursor na caixa de Texto do Utilizador txtUtilizador.Focus(); }

O utilizador pode selecionar os botões Entrar ou Cancelar com o rato normalmente ou então com as combinação de teclas ALT+(letra sublinhada), esta opção deve-se a quando se dá o nome ao botão nas Propriedades, seleccionamos a letra pretendida para a conjugação com & atras, neste caso &Entrar, conjugamos as teclas: ALT+e

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 8: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

No Form de Login(frmLogin), foram criados 2 atributos:

/** Atributos **/ public static string utilizador; public static string password; /** Fim Atributos **/ /******************/

Isto para que depois do o Login ser sucedido, se possa ter a variável utilizador para poder apresentar no Form Pricipal(frmFormacao), quem acedeu ao sistema.

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 9: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

O Form de Login é colocado no Load do Form Principal( frmFormacao):

private void frmFormacao_Load(object sender, EventArgs e) { frmLogin login = new frmLogin(); login.ShowDialog(); //Vamos buscar a Form de Login o atributo estático que criamos (utilizador) //Mostra o formulário de Apresentação/Identificação frmApresentacao frmApp = new frmApresentacao(); //Torna o formulario "child" do principal(FrmFormacao) frmApp.MdiParent = this; //Vamos buscar a Form de Login o atributo estatico que criamos (utilizador) this.Text += " ********** Bem Vindo:" + "-> " + frmLogin.utilizador + " ********** "; frmApp.Show(); }

Form Principal(frmFormacao):

Quando o UJtilizador e a Password estão correctas, é então aberto o Form Principal(frmFormacao).

O Form Principal(frmFormacao), e um formulário MDIContainer, isto é, é um formulário que irá conter formulários dentro, é o formulário principal, todos os outros são Childs (“filhos”):

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 10: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Na abertura deste formulário, é apresentado o Menu com as Opções que o programa tem, assim como um formulário de apresentação.

O formulário Apresentação(frmApresentacao), existe somente para identifica o criador, é um formulário Child, inserido dentro do Form Principal (frmFormacao), esta apresentação do formulário de apresentação é feita no Form_Load do Formulário Principal (frmFormacao):

private void frmFormacao_Load(object sender, EventArgs e) { frmLogin login = new frmLogin(); login.ShowDialog(); //Vamos buscar a Form de Login o atributo estatico que criamos (utilizador) //Mostra o formulário de Apresentação/Identificação frmApresentacao frmApp = new frmApresentacao(); //Torna o formulario "child" do principal(FrmFormacao) frmApp.MdiParent = this; //Vamos buscar a Form de Login o atributo estatico que criamos (utilizador) this.Text += " ********** Bem Vindo:" + "-> " + frmLogin.utilizador + " ********** "; frmApp.Show(); }

Informa que a FormApresentacao (frmAPP), é Child da

FrmFormacao Ana Isabel Rodrigues – Licenciatura Informática

1º Ano – Nº 558

Page 11: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Na Form Principal(frmFormacao), também foi criado um evento ao fechar a mesma:

Quando o utilizador, fecha a aplicação:

private void frmFormacao_FormClosing(object sender, FormClosingEventArgs e) { /* Ao seleccionar a opção sair, é enviada uma mensagem ao utilizador a informar que vai fechar a aplicação e se é isso que pretende */ if (MessageBox.Show("Vai sair da aplicação, tem a certeza? ", "Até a próxima :: " + frmLogin.utilizador + " ::", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) { e.Cancel = true; } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 12: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

É apresentado uma caixa de mensagem a Informar o utilizador de que vai sair da Aplicação e se é isso mesmo que quer, se sim, fecha a mesma.

A variável (public static string utilizador;) que criamos no Form Login(frmLogin) é utilizada no titulo da caixa da mensagem. Form Principal (Menus): No Form Principal conforme vimos atras, quando é acedido, mostra os menus/opções a que o utilizador tem acesso:

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 13: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Para cada menu, foi criado um formulário.

No Menu Tabelas, todos os formulários existentes foram criado para inserção de dados, para posterior utilização no Menu de Inscrições e Listar Cursos.

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 14: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Todos os formulários tem opções de Inserir e Sair dos mesmos.

No formulário de Inscrições (frmInscricoes), só é inserida a Data de Inicio de Curso(DTInicio) e a Data de Termino do mesmo (DTFim).

Todas as restantes informações, são escolhidas através de opções já inseridas, porque excepto a Data Inicio e Data Fim, todos os outro campos são Caixas de Listagem (combobox)…

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 15: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

… onde os dados vem de outras tabelas e os quais neste formulário não podem ser alterados, só seleccionados para a inserção dos formandos nos respectivos cursos.

No Menu Listar Cursos, verificamos os Nº de Cursos que cada formando se inscreveu:

Ao selecionar a coluna Nome, vamos ter o Curso em que se encontra Inscrito, assim como toda a Informação do curso em questão.

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 16: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

A imagem do Curso aparece se houver inscrição, caso não exista inscrição em nenhum curso, aparece a Informação “Sem Inscrições” e sem imagem associada:

Este código, encontra-se adicionado no Evento:

private void dgCursos_CellContentClick(object sender, DataGridViewCellEventArgs e) { int inx = e.RowIndex; try { clsFormando ver = (clsFormando)Program.EP.lstA[inx]; if (ver.NCursos > 0) { lblDescricao.Text = ver.ListarCursos(); if (clsInscricaoCursos._Curso == "Scratch - Aprender a Programar com Scratch | 20H | 75€") { erros.Clear(); dgCursos.DataSource = Program.EP.lstA; dgCursos.Refresh(); pbScratch.Visible = true; clsInscricaoCursos._Curso = ""; } } else { lblDescricao.Text = "Sem Inscrições"; pbScratch.Visible = false; } } catch { } }

Estas linhas foram adicionadas, para cada vez que o click seja feito na linha, o conteúdo do DataSource

seja limpo e o clsInscricaoCursos._Curso seja mudado para a linha seguinte e assim controlar a visibilidade

da imagem.

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 17: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

O Que Aprendi com este projecto?

• Utilizar a propriedade MDI do Formulário, em que podemos definir um formulário como principal e todos os outros serem visíveis dentro deste.

• Utilizar propriedades dos comandos, como: KeyPreview e Comandos, como: KeyDown, onde no formulário do Login substitui o TAB pelo ENTER.

• Fazer uso do Evento Closing do Formulário, poder colocar informação ao utilizador quando fecha um formulário/Aplicação, o que por vezes se torna útil pois pode ser feito sem intenção por parte do utilizador.

• O controlo MasKedTextBox, que ao contrário da TextBox podemos criar uma máscara para o campo, o que se torna bastante útil e pratico para o utilizador.

Quando o utilizador insere os dados em campos com máscara, já insere sem ter a preocupação se os campos estão ou não bem formatados.

• Código Postal, inseri mascara como em outros campos mas restringi o campo a números, não deixa digitar letras, onde inseri o código no Evento KeyPress do Formulário (frmcodPostal)

private void mtxtCodPostal_KeyPress(object sender, KeyPressEventArgs e) { /** Vamos colocar aqui o modo de controlar os caracteres introduzidos, só podem ser introduzidos numeros, caso sejam introduzidas letras são apagadas **/ if (char.IsLetter(e.KeyChar)) { e.Handled = true; } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 18: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

• Descobri que o erro: C# program that throws typeInitializationException, significa que é alguma da informação do…

private void InicializarInfoBase() { /** Inicializamos com alguma informação de base **/ /** Alguns Cursos **/ lstCR.Add(new clsCursos("Scratch", "Aprender a Programar com Scratch", "20", "75€")); lstCR.Add(new clsCursos("Legos", "Aprender a Programar com Legos", "50", "100€")); /** Metodos Pagamento **/ lstMP.Add(new clsMetodosPagamento("Dinheiro")); //[0] lstMP.Add(new clsMetodosPagamento("MB")); //[1] lstMP.Add(new clsMetodosPagamento("Cheque"));//[2] lstMP.Add(new clsMetodosPagamento("Transferência"))//;[3] //- Alguns Códigos Postais lstCPostal.Add(new clsCodigoPostal("4100-123", " Porto")); lstCPostal.Add(new clsCodigoPostal("4430-393" ," Vila Nova Gaia")); lstCPostal.Add(new clsCodigoPostal("4425-051", " Aguas Santas")); lstCPostal.Add(new clsCodigoPostal("4425-001", " Maia")); //- Alguns Formadores lstF.Add(new clsFormador("Claudia Araujo","102846589", "2", "Scratch", "Rua D. Afonso Henriques","913511212","[email protected]", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[1])); lstF.Add(new clsFormador("Silvia Cunha", "200584789", "3", "Scratch", "Rua 14 de Outubro", "920010056", "[email protected]", (clsCodigoPostal)lstCPostal[3], (clsMetodosPagamento)lstMP[0])); lstF.Add(new clsFormador("Ana Rodrigues", "590875457", "1", "Legos", "Rua da Praia", "915361981", "[email protected]", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[3])); //- Alguns Formandos lstA.Add(new clsFormando("Filipa Gomes","91 000 00 00","1-05-2007","000000000","111111111","Rua Praia", "2º Ciclo", "Ana Rodrigues", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[0])); lstA.Add(new clsFormando("Gil Pinho", "91 000 00 10", "08-12-2000","000000000", "111111111", "Rua Chico","10º Ano", "Cristina Gomes", (clsCodigoPostal)lstCPostal[1],(clsMetodosPagamento)lstMP[1])); lstA.Add(new clsFormando("Zahira Rosa", "91 000 00 20", "16-07-2007", "000000000", "111111111", "Rua Maia", "2º Ciclo", "Asha Rosa", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[2]));

Neste caso temos o campo formatado para o Código Postal.

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 19: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

lstA.Add(new clsFormando("Sofia Cruz", "91 000 00 30", "16-05-2008", "000000000", "111111111", "Rua Afurada", "2º Ciclo", "Joana Cruz", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[3])); } … que está em fala ou não existe, por exemplo, se : lstA.Add(new clsFormando("Sofia Cruz", "91 000 00 30", "16-05-2008", "000000000", "111111111", "Rua Afurada", "2º Ciclo", "Joana Cruz", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[4]));

Vai dar o referido erro, porque o métod de pagamento no vector 4 não

existe, temos do [0] ao [3]

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 20: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Conclusão:

Foi um trabalho que achei interessante e motivador, gostei de o fazer dediquei o máximo de tempo disponível. A cada passo que trabalhava no mesmo fazia melhorias e acrescentava o que achava que poderia tornar o trabalho melhor. Penso que neste trabalho, consegui aplicar tudo aquilo que fomos aprendendo ao longo deste semestre, junto com as pesquisas que efectuei na Internet para tornar o trabalho melhor e aproveitei de aprofundar mais conhecimentos nesta matéria. A maior dificuldade no trabalho é fazer os relatórios segundo o Novo Acordo Ortográfico, pelo que para evitar erros de Ortografia preferi optar pelo Antigo.

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 21: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Código Fonte:

Classes:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsCodigoPostal { /** Atributos **/ private string _codPostal; private string _Localidade; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Codigo_Postal { get { return _codPostal; } } public string Localidade { get { return _Localidade; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsCodigoPostal(string CodPostal, string Local) { _codPostal = CodPostal; _Localidade = Local; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _codPostal + " " + _Localidade; } /** Fim Métodos **/ /*********************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 22: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsCursos { /** Atributos **/ protected string _Curso; private string _Descricao; private string _NHoras; private string _Valor; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Curso { get { return _Curso; } } public string Desc { get { return _Descricao; } } public string NHoras { get { return _NHoras; } } public string Val { get { return _Valor; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsCursos() : base() { } public clsCursos(string C, string CD, string NH, string Val) { _Curso = C; _Descricao = CD; _NHoras = NH; _Valor = Val; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _Curso + " - " + _Descricao + " | " + _NHoras + "H | " + _Valor; } /** Fim Métodos **/ /*********************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 23: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsFormacao { /** Atributos **/ private string _nome; public List<clsFormador> lstF; public List<clsFormando> lstA; public List<clsCursos> lstCR; public List<clsCodigoPostal> lstCPostal; public List<clsMetodosPagamento> lstMP; public List<clsInscricaoCursos> lstIC; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Nome { get { return _nome; } set { _nome = value; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsFormacao(string nome) { _nome = nome; lstF = new List<clsFormador>(); lstA = new List<clsFormando>(); lstCR = new List<clsCursos>(); lstCPostal = new List<clsCodigoPostal>(); lstMP = new List<clsMetodosPagamento>(); lstIC = new List<clsInscricaoCursos>(); InicializarInfoBase(); } /** Fim Construtctors **/ /**********************/ private void InicializarInfoBase() { /** Inicializamos com alguma informação de base **/ /** Alguns Cursos **/ lstCR.Add(new clsCursos("Scratch", "Aprender a Programar com Scratch", "20", "75€")); lstCR.Add(new clsCursos("Legos", "Aprender a Programar com Legos", "50", "100€")); /** Metodos Pagamento **/ lstMP.Add(new clsMetodosPagamento("Dinheiro")); lstMP.Add(new clsMetodosPagamento("MB"));

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 24: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

lstMP.Add(new clsMetodosPagamento("Cheque")); lstMP.Add(new clsMetodosPagamento("Transferência")); //- Alguns Códigos Postais lstCPostal.Add(new clsCodigoPostal("4100-123", " Porto")); lstCPostal.Add(new clsCodigoPostal("4430-393" ," Vila Nova Gaia")); lstCPostal.Add(new clsCodigoPostal("4425-051", " Aguas Santas")); lstCPostal.Add(new clsCodigoPostal("4425-001", " Maia")); //- Alguns Formadores lstF.Add(new clsFormador("Claudia Araujo","102846589", "2", "Scratch", "Rua D. Afonso Henriques","913511212","[email protected]", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[1])); lstF.Add(new clsFormador("Silvia Cunha", "200584789", "3", "Scratch", "Rua 14 de Outubro", "920010056", "[email protected]", (clsCodigoPostal)lstCPostal[3], (clsMetodosPagamento)lstMP[0])); lstF.Add(new clsFormador("Ana Rodrigues", "590875457", "1", "Legos", "Rua da Praia", "915361981", "[email protected]", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[3])); //- Alguns Formandos lstA.Add(new clsFormando("Filipa Gomes","91 000 00 00","1-05-2007","000000000","111111111","Rua Praia", "2º Ciclo", "Ana Rodrigues", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[0])); lstA.Add(new clsFormando("Gil Pinho", "91 000 00 10", "08-12-2000","000000000", "111111111", "Rua Chico","10º Ano", "Cristina Gomes", (clsCodigoPostal)lstCPostal[1],(clsMetodosPagamento)lstMP[1])); lstA.Add(new clsFormando("Zahira Rosa", "91 000 00 20", "16-07-2007", "000000000", "111111111", "Rua Maia", "2º Ciclo", "Asha Rosa", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[2])); lstA.Add(new clsFormando("Sofia Cruz", "91 000 00 30", "16-05-2008", "000000000", "111111111", "Rua Afurada", "2º Ciclo", "Joana Cruz", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[3])); } } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 25: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { /** Herança, Formador herda propriedades da Classe Pessoa **/ class clsFormador:clsPessoa { /** Atributos **/ private string _NrFormador; private string _Especialidade; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string NrFormador { get { return _NrFormador; } } public string Especialidade { get { return _Especialidade; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsFormador() : base() { } public clsFormador(string Nome, string NIF, string Nr, string Esp, string Morada, string Contacto, string Email, clsCodigoPostal CP, clsMetodosPagamento MP) : base(Nome, CP) { _Nome = Nome; _Morada = Morada; _NrFormador = Nr; _NIF = NIF; _Especialidade = Esp; _Contacto = Contacto; _Email = Email; _MP = MP; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string Mostrar() { string Info = "Formador: " + _UID + "; " + _Nome + "; Nº: " + _NrFormador + "; " + _Especialidade + "\n"; return Info; } /** Fim Métodos **/ /*********************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 26: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { /** Herança, Formadando assim como o Formador, herda propriedades da Classe Pessoa **/ class clsFormando:clsPessoa { /** Atributos **/ private string _NEscolaridade; private string _EncEducacao; private List<clsInscricaoCursos> _IC; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string NEscolaridade { get { return _NEscolaridade; } } public string EncEducacao { get { return _EncEducacao; } } public int NCursos { get { if (_IC != null) { return _IC.Count; } return 0; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsFormando() : base() { } public clsFormando(string Nome, string Contacto,string DN,string BI, string NIF, string Morada, string NEscolaridade, string EncEducacao, clsCodigoPostal CP, clsMetodosPagamento MP) : base(Nome, CP) { _Nome = Nome; _DNascimento = DN; _Contacto = Contacto; _BI = BI; _NIF = NIF; _Morada = Morada; _NEscolaridade = NEscolaridade; _EncEducacao = EncEducacao; _CP = CP; _MP = MP; _IC = new List<clsInscricaoCursos>(); } /** Adiciona Inscrição **/ public void InscricaoAdicionar(clsInscricaoCursos I) { _IC.Add(I);

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 27: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

} /** Lista os Cursos **/ public string ListarCursos() { string Lista = ""; if (NCursos > 0) { foreach (clsInscricaoCursos I in _IC) { Lista += I.relatorioCurso() + "\n"; } } return Lista; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _Nome + " | " + _NEscolaridade + " | Enc. Educação: " + _EncEducacao; } public static implicit operator clsFormando(clsInscricaoCursos v) { throw new NotImplementedException(); } /** Fim Métodos **/ /*********************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 28: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsInscricaoCursos { /** Atributos **/ public enum Estado { Inscrito, N_Inscrito }; private DateTime _DTInicio; private DateTime _DTFim; private Estado _Estado; public static string _Curso; private clsFormando _F; /** Fim Atributos **/ /*********************/ /** Costructors **/ public string Curso { get { return _Curso; } set { _Curso = value; } } public DateTime DTInicio { get { return _DTInicio; } set { _DTInicio = value; } } public DateTime DTFim { get { return _DTFim; } set { _DTFim = value; } } public clsInscricaoCursos(string C,string DTInicio,string DTFim) { _DTInicio = Convert.ToDateTime(DTInicio); _DTFim = Convert.ToDateTime(DTFim); _Estado = Estado.Inscrito; _Curso = C; _F = null; } public string relatorioCurso() { string Info = "Inscrição Curso: \n"; if (_Estado == Estado.Inscrito) {

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 29: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

Info += "Curso: " + _Curso + "\n" + "Inicio em: " + _DTInicio.ToShortDateString() + "\n" + "Termina em: " + _DTFim.ToShortDateString(); } return Info; } /** Fim Constructors **/ /*********************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 30: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsMetodosPagamento { /** Atributos **/ private string _TPagamento; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Pagamento { get { return _TPagamento; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsMetodosPagamento(string TP) { _TPagamento = TP; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _TPagamento ; } /** Fim Métodos **/ /*********************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 31: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsPessoa { /** Atributos **/ protected string _UID; protected string _Nome; protected string _Morada; protected string _BI; protected string _NIF; protected string _DNascimento; protected string _Contacto; protected string _Email; protected clsCodigoPostal _CP; protected clsMetodosPagamento _MP; /** Fim Atributos **/ /******************/ /** Propriedades */ /***************************************************/ /** Campos a utilizar **/ /**************************************************/ /****************** Nome *******************/ public string Nome { get { return _Nome; } set { _Nome = value; } } /****************** Morada *******************/ public string Morada { get { return _Morada; } set { _Morada = value; } } /***************** BI ********************/ public string BI { get { return _BI; } set { _BI = value; } } /***************** NIF ******************/ public string NIF { get { return _NIF; } set { _NIF = value; } } /********* Data Nascimento *************/ public string DNascimento { get { return _DNascimento; } set { _DNascimento = value; } } /************** Contacto ***************/ public string Contacto {

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 32: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

get { return _Contacto; } set { _Contacto = value; } } /*************** Email ****************/ public string Email { get { return _Email; } set { _Email = value; } } /*********** Codigo Postal ************/ public clsCodigoPostal CP { get { return _CP; } set { _CP = value; } } /****** Métodos de Pagamento *********/ public clsMetodosPagamento MP { get { return _MP; } set { _MP = value; } } /** Fim Propriedades **/ /*********************/ /** Contructors **/ public clsPessoa() { } public clsPessoa(string Nome) { _UID = Guid.NewGuid().ToString(); _Nome = Nome; _Morada = Morada; _BI = BI; _NIF = NIF; _DNascimento = DNascimento; _Contacto = Contacto; _Email = Email; _CP = null; _MP = null; } public clsPessoa(string Nome, string Morada, string BI, string NIF, string DNascimento, string Contacto, string Email, clsCodigoPostal CP, clsMetodosPagamento MP) { _UID = Guid.NewGuid().ToString(); _Nome = Nome; _Morada = Morada; _BI = BI; _NIF = NIF; _DNascimento = DNascimento; _Contacto = Contacto; _Email = Email; _CP = CP; _MP = MP; } public clsPessoa(string nome, clsCodigoPostal CP) { _Nome = nome; _CP = CP;

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 33: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

} /** Fim Constructors **/ /*********************/ /** Métodos Públicos **/ public virtual string Mostrar() { string Info = "Info: " + _UID + "; " + _Nome + "; " +"; Morada " + _Morada + _BI + "; " + _NIF + "; " + _DNascimento + "; " + _Contacto + "; " + _Email + "; Método Pagamento: " + _MP + "; Codigo Postal: "; if (_CP != null) Info += _CP.Codigo_Postal; else Info += "****"; return Info; } /** Fim Métodos Publicos */ /************************/ } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558

Page 34: Programação C# - Classes,Heranças

Projecto Programação II - 1º Ano Licenciatura Informática

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace Formacao { static class Program { /** Torna visivel a CLSFORMAÇÃO por toda a aplicação **/ public static clsFormacao EP = new clsFormacao("Formação"); /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmFormacao()); } } }

Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558