Você está na página 1de 58

Tcnicas de Programao

(Programao Orientada a Objetos Utilizando C#) Professor Giovan arreira

!"#$

Orientao a Objetos

!%&#&!"#$

apresentao minha e dos estudantes paradigma de programao vantagens da POO algumas definies (bsicas) Apresentao

Critrios de 'valiao Em cada trimestre, faremos um trabalho (ou prova) com peso pes"uisas relevantes sobre c#digos) com peso $%

e atividades (teoria e!ou

ibliografia fortemente s(gerida) &endal, 'imon ( Ob)ect Oriented Programming using *+ pode ser descarregado gratuitamente em http,!!boo-boon%com!en!te.tboo-s!it/programming!ob)ect/oriented/programming/using/c/sharp &01, *+ e Orientao a Ob)etos pode ser descarregado gratuitamente em http,!!222%-01%com%br!do2nloads!apostilas!dotnet!-01/-$0/csharp/e/orientacao/a/ob)etos 3an4ano, 5%A%6%7% / 8isual *+ 9:09 E.press 6ossas notas de classe%

Paradigmas de Programao O paradigma (ou modelo) da programao estruturada, programas devem ser desenvolvidos em blocos (procedures) "ue fa4em o programa ser fcil de entender e de manter% 3as note "ue, dados e c#digos so tratados como elementos separados% ;avia uma definio antiga "ue di4ia, <dados=c#digo>programa?% (*+ e %6E@ ( 7uia do Aesenvolvedor) E.emplo, scanf B procedure O paradigma da POO, e.pande e aperfeioa o conceito acima, pois, na POO, os programas so desenvolvidos como colees de ob)etos "ue so capa4es de receber!mandar mensagens e processar dados de!para outros ob)etos% Podemos di4er "ue cada ob)eto pode ser visto como uma <m"uina diferente?% E.emplo, te.tbo. B classe E., Cm programador poderia fa4er um c#digo "ue recebe uma "uantia de horas e depois calcula o salrio a ser pago% Ae maneira estruturada, Dler horas Duma varivel arma4ena o valor das horas Dcalcular salrio Da varivel E invocada Descrever valor do salrio na tela Ae maneira orientada a ob)etos, o c#digo E facilmente dividido e depois agrupado, Dum ob)eto <lF as horas? e arma4ena as horas como seu atributo Dcalcular salrio Dum ob)eto com um atributo hora <escreve o salrio na tela? *antagens da OO Podemos apontar, a economia na escrita de c#digo, visto "ue um ob)eto pode ser usados (reutili4ao) em vrias situaes grande abstrao facilita a manuteno, visto "ue as funcionalidades podem ser aprimoradas independentemente A programao baseada na OO tem como princGpios , abstrao, "ue nos permite abordar algo comple.o, ignorando o "ue E irrelevante encapsulamento, podemos nos focar no "ue alguma coisa fa4, sem saber como ela fa4 generali4ao!especiali4ao, nos permite definir caracterGsticas gerais e operaes de um ob)eto polimorfismo, comportamentos diferentes de algo em situaes diferente% 'lg(mas +efini,es Ob)etos, so entidades capa4es de receber mensagens, processar dados e enviar mensagens para outros ob)etos% Cm boto de O& em uma )anela do Hindo2s E um e.emplo de ob)eto

*lasses, E um <soft2are design? "ue descreve as propriedades gerais de alguma coisa "ue est sendo modelada pelo <soft2are?% A classe E composta de ob)etos% Aito de outra maneira, antes de um ob)eto ser criado, devemos definir o con)unto de atributos e mEtodos referentes a tal ob)eto, este con)unto E a classe% Atributos, as variveis (e seus valores, claro) "ue pertencem ao ob)eto% 3Etodos, aes diversas de um ob)etoI onde o ob)eto pode por e.emplo, alterar os valores dos seus atributos ou se comunicar com outros ob)etos% E.ercGcios 0) Jual E a grande diferena entre POO e Programao EstruturadaK 9) 'upondo "ue um ob)eto se)a uma conta corrente, "ual poderia ser a classe, atributos e mEtodosK $) 'upondo um carro, "ual poderia ser a classe, atributos e mEtodosK L) E.pli"ue a diferena, M partir de nossas definies, entre o NscanfO e uma Nte.t bo.OK P) A POO E a negao da PEK E.pli"ue% Q) *riar classes, mEtodos e atributos para os ob)etos, programador, mecRnico de motores, professores, trabalhadores% ) Afinal, o "ue E uma NprocedureO na programao estruturadaK S) 'e ampliarmos a definio de NprocedureO e aplicarmos na POO, teremos o "uFK Tespostas 0) POO os ob)etos possuem atributos, en"uanto na PE as funes e as variveis so completamente separadas% 9) *lasse E o con)unto de todas as contas% Atributos so o saldo e o tipo, corrente ou poupana% 3Etodos podem ser as operaes sa"ue, dep#sito, etc% L) 'canf lF valores e arma4ena em variveis "ue no fa4em parte do scanf, en"uanto uma te.tbo. arma4ena o valor como seu atributo% P) 6o% 6a verdade amplia os conceitos de NproceduresO da linguagem estruturada para classes% ) U um bloco de programao na PE% S) @eremos a classe% -eit(ra Obrigat.ria Ver o capGtulo 0 e a pgina do livro http,!!222%-01%com%br!do2nloads!apostilas!dotnet!-01/-$0/csharp/e/orientacao/a/ob)etos

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /&!&!"#$ C3V ar"uiteturas de computadores m"uinas virtuais relembrando a l#gica Polimorfismo, capacidade de tratar ob)etos criados a partir das classes especGficas como ob)etos de uma classe genErica% ;erana, a idEia E reutili4ar o c#digo de uma determinada classe em outras classes% Unified 0odelling -ang(age (U0-) *omo uma classe consite de, um nome (comea com letra maiWscula) uma lista de atributos uma lista de mEtodos @emos abai.o um diagrama "ue representa uma classe com seus atributos e mEtodos% *lass6ame attributes methods()

'r1(itet(ra de com2(tadores ; diversas ar"uiteturas diferentes, como Xntel, AT3, Po2erP*, cada uma com sua linguagem de m"uina% Portanto, um c#digo precisa ser compilado em cada ar"uitetura para se tornar um programa "ue roda em todas as ar"uiteturas% 031(inas *irt(ais Cma forma de evitar compilaes em cada ar"uitetura E a adoo de uma m"uina virtual, onde o responsvel pela m"uina a adapta para cada ar"uitetura e o programador compila o c#digo apenas para para a m"uina, uma Wnica ve4% 4elembrando a l.gica A receita do bolo, escrever o c#digo no bloco de notas compilar utili4ando, D path>YpathYIY'ZstemTootY[3icrosoft%6E@[\rame2or-[v9%:%P: 9 D csc 6omePrograma%cs e.ecutar, D 6omePrograma%e.e 6o visual studio E mais fcil pois tem o recurso autocompletar% Para mostrar nWmero nas linhas tools //] options //] sho2 all settings //] te.t editor //] all languages //] line numbers

^reve resumo sobre os comandos do AO'% _, B para acessar a unidade . dir B para e.ibir o "ue h na unidade ou pasta cd )oao B para entrar na pasta N)oaoO cd %% B voltar uma pasta //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 9P/9/9:0$ vari3veis *ari3veis E.emplos de declarao, int numeroAa*ontaI double precoAoProdutoI 6ota, declarao no padro `camel case`% *+ E estaticamente e fortemente tipada (ve)a a pgina 0L do manual da -01)% E.emplo de declarao com iniciali4ao, int "uantia > :I E.emplo de iniciali4ao, "uantia > :I 6ota, toda varivel deve ser iniciali4ada% Ti2os Primitivos int, double, bool e char Para saber mais tipos, consultar a pgina 0Q do manual da -01% Ti2os no 2rimitivos string O2eradores a AritmEtico = / D ! Y a Atribuio > a Telacional >> b> c c> ] ]> a V#gico dd ee E.emplo de atribuio, valor > valor = 0I E.emplo9 ( declarao com iniciali4ao e atribuio, int valor > I

bool t > false I t > ( valor >> ) I !!`t` E verdadeiro t > ( valor b> 9) I !!`t` E falso E.emplo$,
int valor > $:I bool teste > false I teste > valor c L: dd valor ] 9:I !!`teste` E verdadeiro teste > valor c L: ee valor >> 0$I !!`teste` E verdadeiro

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /&$&!"#$ O *is(al C#

Criando (m novo 2rojeto

Projeto 2ara a2licativos de console

Onde comear escrever (m c.digo

6ota, para numerar linhas como na imagem acima, v em,

E.ercGcios 0/\a4er um programa "ue pergunta seu nome e depois escreve na tela <Oi 'eu6omebbb?% using 'ZstemI !!perceba o 'Zstem com s maiWsculo !!o using 'Zstem E necessrio devido ao comando TeadVine class e.ercicio0 f static void 3ain() f string nomeI !!linha "ue escreve na tela 'Zstem%*onsole%HriteVine(gJual E o seu nomeKg)I !!linha "ue lF nome>*onsole%TeadVine()I !!linha "ue escreve na tela 'Zstem%*onsole%HriteVine(gOi g=nome=gbbbg)I h h

9/\a4er um programa "ue pergunta 9 nWmeros inteiros e depois escreve na tela <A soma E Tesultadobbb? using 'ZstemI !!perceba o 'Zstem com s maiWsculo !!o using 'Zstem E necessrio devido ao comando TeadVine class e.ercicio9 f static void 3ain() f !!declarao dos nWmeros inteiros int numeroA>:, numero^>:, resultado>:I !!declarao da string de leitura do teclado string variavel@emporariaI !!linha "ue escreve na tela 'Zstem%*onsole%HriteVine(gJual E o primeiro nWmeroKg)I !!linha "ue lF variavel@emporaria>*onsole%TeadVine()I !!linha "ue converte de string para inteiro numeroA>*onvert%@oXnt$9(variavel@emporaria)I !!linha "ue escreve na tela 'Zstem%*onsole%HriteVine(gJual E o segundo nWmeroKg)I !!linha "ue lF variavel@emporaria>*onsole%TeadVine()I !!linha "ue converte de string para inteiro numero^>*onvert%@oXnt$9(variavel@emporaria)I !!linha "ue fa4 a soma resultado>numeroA=numero^I !!linha "ue escreve na tela o resultado 'Zstem%*onsole%HriteVine(gA soma E g=resultado=g bbbg)I h h $/\a4er um programa "ue pergunta 9 nWmeros reais e depois pergunta uma operao (=/D!), daG efetua e escreve na tela, <A nomeAaOperao de nWmeroA e nWmero^ E Tesultado?% using 'ZstemI !!perceba o 'Zstem com s maiWsculo !!o using 'Zstem E necessrio devido ao comando TeadVine class e.ercicio$

f static void 3ain() f double numeroA>:, numero^>:, resultado>:I string variavel@emporariaI 'Zstem%*onsole%HriteVine(gJual E o primeiro nWmeroKg)I variavel@emporaria>*onsole%TeadVine()I numeroA>*onvert%@oAouble(variavel@emporaria)I 'Zstem%*onsole%HriteVine(gJual E o segundo nWmeroKg)I variavel@emporaria>*onsole%TeadVine()I numero^>*onvert%@oAouble(variavel@emporaria)I !!para escrever na tela o menu de operaes 'Zstem%*onsole%HriteVine(gJual E operaoKg)I 'Zstem%*onsole%HriteVine(g0 / para =g)I 'Zstem%*onsole%HriteVine(g9 / para /g)I 'Zstem%*onsole%HriteVine(g$ / para ,g)I 'Zstem%*onsole%HriteVine(gL / para Dg)I !!salva a opo escolhida variavel@emporaria>*onsole%TeadVine()I !!A@E6ijO O X\ 6jO @E3 `I` !!o if testar se a string variavel@emporaria !!E o caracter g0g, g9g, etc% if (variavel@emporaria>>g0g) f resultado>numeroA=numero^I 'Zstem%*onsole%HriteVine(gA soma E g=resultado=g bbbg)I h else if (variavel@emporaria>>g9g) f resultado>numeroA/numero^I 'Zstem%*onsole%HriteVine(gA subtrao E g=resultado=g bbbg)I h else if (variavel@emporaria>>g$g) f resultado>numeroA!numero^I 'Zstem%*onsole%HriteVine(gA diviso E g=resultado=g bbbg)I h else if (variavel@emporaria>>gLg) f resultado>numeroADnumero^I 'Zstem%*onsole%HriteVine(gO produto E g=resultado=g bbbg)I h

!!linha "ue corrige o usurio "ue digitar uma opo maior "ue L else f 'Zstem%*onsole%HriteVine(g\avor escolher 0, 9, $ ou L bbbg)I h h h L/\a4er um contador de 0 atE 9:% class e.ercicioL f static void 3ain() f int contador>0I 2hile (contador c> 9:) f 'Zstem%*onsole%HriteVine(contador)I !!linha de incremento, fa4 com "ue o contador aumente de 0 em 0 contador>contador=0I h h h P/\a4er um contador de 9: atE :, "ue diminui de 9 em 9% class e.ercicioP f static void 3ain() f int contador>9:I 2hile (contador ]> :) f 'Zstem%*onsole%HriteVine(contador)I !!linha de incremento, fa4 com "ue o contador aumente de 0 em 0 contador>contador/9I h h h Q/\a4er um contador de 9: atE 0, mas "ue escreve <par? ou <Gmpar? no lugar dos nWmeros% class e.ercicioQ f static void 3ain() f int contador>9:, resto>:I 2hile (contador ] :)

f !!testa se E par ou Gmpar vendo se o resto E : !!a operao Y calcula o resto da diviso por 9 resto>contador Y 9I if (resto>>:) f 'Zstem%*onsole%HriteVine(contador=g E par bg)I h else f 'Zstem%*onsole%HriteVine(contador=g E Gmpar bg)I h !!linha de incremento, fa4 com "ue o contador aumente de 0 em 0 contador>contador/0I h h h /\a4er um programa "ue pergunta 9 nWmeros reais e mostra na tela <o maior E nWmeroAbbb? using 'ZstemI class e.ercicio f static void 3ain() f double numeroA>:, numero^>:I string temporariaI 'Zstem%*onsole%HriteVine(gAigite um nWmero bg)I temporaria>*onsole%TeadVine()I numeroA>*onvert%@oAouble(temporaria)I 'Zstem%*onsole%HriteVine(gAigite um nWmero bg)I temporaria>*onsole%TeadVine()I numero^>*onvert%@oAouble(temporaria)I if (numeroA ] numero^) f 'Zstem%*onsole%HriteVine(numeroA=g E maior "ue g=numero^)I h else if (numero^ ] numeroA) f 'Zstem%*onsole%HriteVine(numero^=g E maior "ue g=numeroA)I h else f 'Zstem%*onsole%HriteVine(numero^=g E igual ao g=numeroA)I

h h h S/\a4er um programa "ue retorna o valor de uma varivel do tipo `bool`% class @este f static void 3ain() f int valor > :I bool teste > falseI teste > valor c 9:I !!programa di4 true ou false 'Zstem%*onsole%HriteVine(teste)I h h 1/\a4er um programa "ue pergunta "uantos pastEis o cliente "uer, "ual E a distRncia de entrega, daG, calcula o preo total (Tk 9,P: cada pastel e Tk :,0: o -m rodado)% using 'ZstemI public class Pastel f public static void 3ain() f int numeroPastel > :I double preco@otal > :I double distancia > :I string tempI *onsole%HriteVine(gJuantos pastEisKg)I temp > *onsole%TeadVine()I numeroPastel > *onvert%@oXnt$9(temp)I *onsole%HriteVine(gJuantos -ms para a entregaKg)I temp > *onsole%TeadVine()I distancia > Aouble%Parse(temp)I preco@otal > distanciaD:%0:=numeroPastelD9%P:I *onsole%HriteVine(gO preo total E Tk g = 'tring%\ormat(gf:,:%::hg,preco@otal))I h h 0:/Cma empresa ferroviria cobra Tk :,1P por -m rodado e d uma refeio grtis para "uem gasta mais de Tk P:,::% \a4er um programa "ue calcula o preo da passagem e e.ibe uma mensagem de `parabEns` caso a pessoa gaste mais de Tk P:,::% using 'ZstemI public class Empresa\erroviaria f

public static void 3ain() f int -m > :I double preco@otal > :I string tempI *onsole%HriteVine(g g)I *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I *onsole%HriteVine(gJuantos -m vocF percorrerKg)I temp > *onsole%TeadVine()I -m > *onvert%@oXnt$9 (temp)I preco@otal > -mD:%1PI if (preco@otal c P:) *onsole%HriteVine(gO preo total E Tk g = 'tring%\ormat(gf:,:%::hg,preco@otal))I else *onsole%HriteVine(gParabEns, vocF ganhou uma refeiobbg)I *onsole%HriteVine(gO preo total E Tk g = 'tring%\ormat(gf:,:%::hg,preco@otal))I *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I *onsole%HriteVine(g g)I h h 00/\a4er um programa "ue e.ibe os 0: primeiros nWmeros da se"uFncia de \ibonacci% using 'ZstemI public class \ibonacci f public static void 3ain() f int num0 > :I int num9 > 0I int temp > :I int contador > :I *onsole%HriteVine(g g)I *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I *onsole%HriteVine(gOs 0: primeiros nWmeros da se"uFncia so,g)I temp > num0=num9I 2hile (contador c 0:) f num0 > num9I num9 > tempI temp > num0 = num9I contador ==I *onsole%HriteVine(go nWmero g=contador=g E g=temp)I h *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I *onsole%HriteVine(g g)I h h Aesafio ( \a4er um programa "ue pergunta "ual E o nome do cliente, a distRncia "ue este percorrer, calcula e escreve em um ar"uivo estes dados% (o preo do -m E Tk :,11)% Vista de E.ercGcios 0/\a4er um programa "ue pergunta seu nome e escreve <^om dia seu6ome b?

9/\a4er um programa "ue pergunta $ nWmeros inteiros e escreve na tela <A soma E resultado\inal%? $/\a4er um programa "ue pergunta $ nWmeros reais, pergunta a operao e escreve na tela <A nomeAaOperao de numeroA com numero^ e numero* E resultado\inal b? L/\a4er um contador "ue vai de 11 atE : contando de $ em $% P/Cma papelaria fa4 c#pias do tipo preto e branco por Tk :%99 e coloridas por Tk :%P:% \a4er um programa "ue pergunta um nome, "uantas c#pias preta e brancas, "uantas coloridas e depois escreve na tela <nomeAo*liente comprou total*opias, sendo copiaP^, copia*olor e pagar Tk valor@otal b?

00/$/9:0$ TeferFncias Telacionamentos 4efer5ncias @odo ob)eto possui atributos e mEtodos, podemos acessar tais atributos e mEtodos atravEs de referFncias%

0S/$/9:0$ relacionamentos / agregao mEtodos E.ercicio0/fa4er um programa "ue tenha 0 e.emplo de agregao% using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class *liente f public string nomeI public int idadeI h class *artaoAe*redito f public int numeroI public *liente clienteI h class Program f

static void 3ain(stringlm args) f !!declarando as variveis string tempI *artaoAe*redito cdc > ne2 *artaoAe*redito()I *liente cli > ne2 *liente()I !!ligando os ob)etos cdc%cliente > cliI 'Zstem%*onsole%HriteVine(gescreva o nome do cliente%g)I cdc%cliente%nome>*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gescreva a idade do cliente%g)I temp > *onsole%TeadVine()I cdc%cliente%idade > *onvert%@oXnt$9(temp)I 'Zstem%*onsole%HriteVine(gescreva o nWmero do carto%g)I temp > *onsole%TeadVine()I cdc%numero > *onvert%@oXnt$9(temp)I 'Zstem%*onsole%HriteVine(go nome do cliente E g=cdc%cliente%nome=g a idade E g=cdc%cliente%idade=g e o nWmero do carto E g=cdc%numero)I 'Zstem%*onsole%HriteVine(gpressione "ual"uer tecla para sair%g)I temp > *onsole%TeadVine()I h h h E.ercGcio9 ( Cm programa com mEtodos% using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class *liente f public string nomeI public int idadeI h class *artaoAe*redito f public int numeroI public double saldoI !!public string dataAe8alidadeI public *liente clienteI public void Pagamento(double valor) f this%saldo > saldo / valorI h

public void *ompra(double valor) f this%saldo > saldo = valorI h public void *onsulta'aldo() f 'Zstem%*onsole%HriteVine(gsaldo, g = this%saldo)I h h class Program f static void 3ain(stringlm args) f !!declarando as variveis string tempI *artaoAe*redito cdc > ne2 *artaoAe*redito()I *liente cli > ne2 *liente()I !!ligando os ob)etos cdc%cliente > cliI 'Zstem%*onsole%HriteVine(g"ual E o valor da compraKg)I temp > *onsole%TeadVine()I !!o mEtodo compra, ve)a a implementao !!acima, na classe carto de crEdito cdc%*ompra( *onvert%@oAouble(temp))I 'Zstem%*onsole%HriteVine(gescreva o nome do cliente%g)I cdc%cliente%nome>*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gescreva a idade do cliente%g)I temp > *onsole%TeadVine()I cdc%cliente%idade > *onvert%@oXnt$9(temp)I 'Zstem%*onsole%HriteVine(gescreva o nWmero do carto%g)I temp > *onsole%TeadVine()I cdc%numero > *onvert%@oXnt$9(temp)I 'Zstem%*onsole%HriteVine(go nome do cliente E g=cdc%cliente%nome=g a idade E g=cdc%cliente%idade=g e o nWmero do carto E g=cdc%numero)I cdc%*onsulta'aldo()I 'Zstem%*onsole%HriteVine(gpressione "ual"uer tecla para sair%g)I temp > *onsole%TeadVine()I h h h

9P/$/9:0$ overloading construtores arraZs

E.emplo0/ Cm programa com sobrecarga (overloading)

using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 7erente f public 'tring nomeI public double salarioI !!abai.o temos 9 mEtodos com o mesmo nome, caracteri4ando uma !!sobrecarga !!a sobrecarga E utili4ada "uando "ueremos utili4ar um valor padro !!"ue ser omitido no mEtodo, no e.emplo abai.o, o :%0 public void Aumenta'alario() f this%Aumenta'alario(:%0)I h public void Aumenta'alario(double ta.a) f this%salario > this%salario = this%salario D ta.aI h h class Program f static void 3ain(stringlm args) f 7erente g > ne2 7erente()I g%salario > 0:::I 'Zstem%*onsole%HriteVine(gsalrio, g = g%salario)I 'Zstem%*onsole%HriteVine(gAumentando o salrio em 0:Y g)I g%Aumenta'alario()I 'Zstem%*onsole%HriteVine(gsalrio, g = g%salario)I 'Zstem%*onsole%HriteVine(gaumentar o salrio em $:Y g)I g%Aumenta'alario(:%$)I 'Zstem%*onsole%HriteVine(gsalrio, g = g%salario)I 'Zstem%*onsole%Tead&eZ()I h h h E.emplo9 ( *onstrutor, podemos iniciali4ar variveis passando um parRmetro (evita erros de compilao por falta de iniciali4ao de variveis)

using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class *artao f !!declarao de uma varivel de tipo inteiro public int numero*artaoI !!criao de um construtor, !!o construtor no devolve resposta, en"uanto o mEtodo devolve !!com este construtor, "uando fi4ermos uma referFncia !!ao ob)eto numero*artao, podemos colocar um valor entre !!parFnteses, ou se)a, um parRmetro public *artao(int numero*artao) f this%numero*artao > numero*artaoI h h class Program f static void 3ain(stringlm args) f !!abai.o temos o nWmero do carto passado como parRmetro *artao giovan > ne2 *artao(09$ QL1:)I 'Zstem%*onsole%HriteVine(go nWmero do carto passado no parRmetro acima E g=giovan%numero*artao)I 'Zstem%*onsole%Tead&eZ()I h h h E.emplo$ ( ArraZs, pense em arraZs como matri4es em 3atemtica, cada posio guarda um valor diferente% using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class Program f static void 3ain(stringlm args) f intlm numeroPara@estar > ne2 intl9:mI

int resultado > :I string temporariaI 'Zstem%*onsole%HriteVine(gEscreva um nWmerog)I temporaria>*onsole%TeadVine()I numeroPara@estarl:m > *onvert%@oXnt$9(temporaria)I 'Zstem%*onsole%HriteVine(gEscreva um nWmerog)I temporaria > *onsole%TeadVine()I numeroPara@estarl0m > *onvert%@oXnt$9(temporaria)I 'Zstem%*onsole%HriteVine(gEscreva um nWmerog)I temporaria > *onsole%TeadVine()I numeroPara@estarl9m > *onvert%@oXnt$9(temporaria)I 'Zstem%*onsole%HriteVine(gEscreva um nWmerog)I temporaria > *onsole%TeadVine()I numeroPara@estarl$m > *onvert%@oXnt$9(temporaria)I resultado > numeroPara@estarl:m = numeroPara@estarl0mI 'Zstem%*onsole%HriteVine(ga soma de g = numeroPara@estarl:m = g com g = numeroPara@estarl0m = g E, g=resultado)I resultado > numeroPara@estarl9m = numeroPara@estarl$mI 'Zstem%*onsole%HriteVine(go produto de g = numeroPara@estarl9m = g com g = numeroPara@estarl$m = g E, g=resultado)I 'Zstem%*onsole%Tead&eZ()I h h h E.ercGcios 0/ \a4er um programa "ue possua, uma classe funcionario, com os ob)etos salario e identificador uma classe imposto, com o ob)eto XT e um mEtodo "ue calcule 09Y de XT para salrios maiores "ue Tk $:::,:: uma classe com o c#digo O programa deve perguntar, o nome do funcionrio o identificador (um nWmero inteiro de $ dGgitos) o salrio (utili4ar agregao) O programa escrever na tela, o nome do funcionrio o salrio bruto o salrio lG"uido (salrio menos XT) o identificador using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI

namespace *onsoleApplication0 f class funcionario f public 'tring nomeI public Aouble salario > :I public Xnt$9 identificadorI h class imposto f public Aouble XT > :I public void imposto*obrado(double salario^ase) f if (salario^ase ] $:::) f this%XT > salario^ase D :%0:I 'Zstem%*onsole%HriteVine(g o salario bruto E g = salario^ase)I 'Zstem%*onsole%HriteVine(g o salrio lG"uido E g = (salario^ase/this%XT))I h else f 'Zstem%*onsole%HriteVine(g o salario bruto e o lG"uido E g = salario^ase)I h h h class Program f static void 3ain(stringlm args) f funcionario identidade > ne2 funcionario()I funcionario numeroXdentifica > ne2 funcionario()I imposto pagamento > ne2 imposto()I 'Zstem%*onsole%HriteVine(g "ual E o nome do funcionrioK g)I identidade%nome>*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g "ual E o identificadorK g)I numeroXdentifica%identificador > *onvert%@oXnt$9(*onsole%TeadVine())I 'Zstem%*onsole%HriteVine(g "ual E o salrioK g)I pagamento%imposto*obrado(*onvert%@oAouble(*onsole%TeadVine()))I 'Zstem%*onsole%HriteVine(g o identificador E g = numeroXdentifica%identificador)I 'Zstem%*onsole%Tead&eZ()I h h h

/////////////////////////////////////////////////////////////////////////////////////////////////// 0/L/9:0$ Pro)eto para nota J0 Ale.andre / O "ue E POOK 5osE ( Jual E a diferena entre os paradigmas de linguagens estruturadas e as orientadas M ob)etosK Vucas ( E.pli"ue herana% 8inGcius ( E.pli"ue polimorfismo% Helington ( Juais as vantagens de uma linguagem POOK J9 \aa um programa em c+ "ue pergunte o seu nome e depois escreva na tela <seu6ome, ho)e E dia 0 de abrilb <% J$ \aa um programa "ue pergunta, "uantos -m vocF vai rodar "uantos dias vai ficar com o carro "ual o seu nome Aepois o programa escrever na tela, <seu6ome vai rodar .&m, ficar .Aias com o carro e pagar valor@otal%? JL O mesmo programa acima, mas agora ele e.ibe <parabEns, vocF ganhou o hotel?, se o usurio rodar mais de 9::: -m% JP \a4er um programa "ue tenha, uma classe chamada funcionarioEmpresa, dentro desta classe h nome e salrio uma classe chamada imposto'obre'alario, dentro desta classe h um mEtodo para XT e um para o X6'' O programa pergunta o nome e o salrio do funcionrio, "ue devem ser guardados nas variveis pWblicas nome e salrio da classe funcionarioEmpresa% Ento o programa calcula o XT e o X6'', M partir de mEtodos e e.ibe na tela, <funcionarioEmpresa ganha salario bruto, e salario lG"uido (salrio ( XT ( X6'')?

Aados, XT E 09Y e s# E cobrado em salrios maiores "ue Tk $:::,::, o X6'' E SY para "ual"uer salrio% /////////////////////////////////////////////////////////////////////////////////////////////////////////////// S/L/9:0$ Teviso 0/\a4er um programa "ue possua uma classe \uncionario, uma classe Xmposto e a classe program% 6a classe \uncionario dever haver os ob)etos nome, do tipo string e salrio, do tipo double% 6a classe Xmposto dever haver os ob)etos XmpostoTenda e XmpostoXnss, "ue sero calculados dentro de um mEtodo% O programa dever perguntar o nnome do funcionrio e o salrio, ento far os calculos referentes aos impostos e escrever na tela o nome do funcionrio e o valor dos impostos% using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class \uncionario f !!criamos uma classe com os ob)etos nome e salario public string nomeI public double salario>:I h class Xmposto f !!criamos uma classe Xmposto com os ob)etos ir,inss, XmpostoTenda e XmpostoXnss public double ir>:%0PI public double inss>:%0:I public double XmpostoTenda > :I public double XmpostoXnss > :I !!criamos um mEtodo chamado calculadoraXmposto para calcular os impostos public void calculadoraXmposto(double salarioAo*olaborador) f !!a matemtica dentro do mEtodo, para calcular impostos !!para usar as variveis ir e inss, usa/se this%ir e this%inss XmpostoTenda > salarioAo*olaborador D this%irI XmpostoXnss > salarioAo*olaborador D this%inssI h h class Program f static void 3ain(stringlm args) f

!!as declaraes string tempI \uncionario nome*odigo > ne2 \uncionario()I !!a declarao de uma varivel para usar o mEtodo "ue calcula imposto de renda e inssI a varivel chama/se )ose Xmposto )ose > ne2 Xmposto()I !!para pegar do teclado e salvar em variveis "ue vem de fora desta classe 'Zstem%*onsole%HriteVine(gescrever seu nomeg)I nome*odigo%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gescrever o salariog)I temp > *onsole%TeadVine()I nome*odigo%salario > *onvert%@oAouble(temp)I !!para calcular os impostos )ose%calculadoraXmposto(nome*odigo%salario)I !!para escrever na tela 'Zstem%*onsole%HriteVine(gnome vindo de fora desta classeg)I 'Zstem%*onsole%HriteVine(nome*odigo%nome)I !!para e.ibir os impostos calculados no mEtodo 'Zstem%*onsole%HriteVine(gO imposto de renda calculado no mEtodo foi de g)I 'Zstem%*onsole%HriteVine()ose%XmpostoTenda)I 'Zstem%*onsole%HriteVine(gO inss calculado no mEtodo foi de g)I 'Zstem%*onsole%HriteVine()ose%XmpostoXnss)I 'Zstem%*onsole%Tead&eZ()I h h h //////////////////////////////////////////////////////////////////////////////////////////////////////////////// 99/L/9:0$ for arraZ mod E.ercGcio ( Ctili4ando arraZ, escrever um programa "ue testa o algoritmo gerador do *P\%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class Program f static void 3ain(stringlm args) f intlm digito > ne2 intl00mI int contador > :,resultado > :I string temporariaI

!!for para entrar os 1 dGgitos for (contador > :I contador c 1I contador > contador = 0) f 'Zstem%*onsole%HriteVine(gescreva um dGgitog)I temporaria > *onsole%TeadVine()I digitolcontadorm > *onvert%@oXnt$9(temporaria)I h !!o algoritmo resultado > 0 D digitol:m = 9 D digitol0m = $ D digitol9m = L D digitol$m = P D digitolLm = Q D digitolPm = D digitolQm = S D digitol m = 1 D digitolSmI digitol1m > resultado Y 00I if (digitol1m >> 0:) f digitol1m > :I h resultado > : D digitol:m = 0 D digitol0m = 9 D digitol9m = $ D digitol$m = L D digitolLm = P D digitolPm = Q D digitolQm = D digitol m = S D digitolSm = 1 D digitol1mI digitol0:m > resultado Y 00I if (digitol0:m >> 0:) f digitol0:m > :I h !!para escrever na tela 'Zstem%*onsole%HriteVine(go documento Eg)I for (contador > :I contador c 00I contador > contador = 0) f 'Zstem%*onsole%Hrite(digitolcontadorm)I h !!para sair 'Zstem%*onsole%HriteVine(g g)I 'Zstem%*onsole%HriteVine(gpressione "ual"uer tecla para sairg)I temporaria > *onsole%TeadVine()I h h h

E.ercGcio 9 ( Ctili4ando for, escrever um programa "ue pergunta um nWmero natural e depois escreve na tela desde o nWmero perguntado atE 4ero%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 7eradoraAe'e"uencia f Xnt$9 c > :I Xnt$9 cont > :I public void Escreve'e"uencia(Xnt$9 c) f *onsole%HriteVine(g[nDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I for (cont > cI cont ]> :I cont > cont / 0) f 'Zstem%*onsole%HriteVine(cont)I h *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD[ng)I h h class Program f static void 3ain() f 7eradoraAe'e"uencia gerador > ne2 7eradoraAe'e"uencia()I *onsole%HriteVine(gAigite um nWmero 6atural bg)I

gerador%Escreve'e"uencia(*onvert%@oXnt$9(*onsole%TeadVine()))I *onsole%Tead&eZ()I h h h

E.ercGcio $ ( Ctili4ando `for` e `arraZ`, escrever um programa com duas classes "ue pergunta um nWmero natural em uma classe e depois escreve na tela desde o nWmero perguntado atE 4ero, utili4ando um mEtodo na outra classe%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 7eradoraAe'e"uencia f intlm c > ne2 intl00mI int cont > :, d > :I

public void Escreve'e"uencia(int d) f *onsole%HriteVine(g[nDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I for (cont > dI cont ]> :I cont > cont / 0) f !!na linha abai.o, cl:m>:, cl0m>0, etc clcontm > contI 'Zstem%*onsole%HriteVine(clcontm)I h *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD[ng)I h h class Program f static void 3ain() f 7eradoraAe'e"uencia gerador > ne2 7eradoraAe'e"uencia()I *onsole%HriteVine(gAigite um nWmero 6atural bg)I gerador%Escreve'e"uencia(*onvert%@oXnt$9(*onsole%TeadVine()))I *onsole%Tead&eZ()I h h h

E.ercGcio L ( Ctili4ando `for` e `arraZ`, escrever um programa com duas classes, "ue pergunta um nWmero na classe `Program` e utili4a um mEtodo na classe `7eradorAe'e"uencia` para escrever a tabuada do nWmero perguntado na tela%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 7eradoraAe'e"uencia f intlm c > ne2 intl00mI int cont > :, d > :I

public void Escreve'e"uencia(int d) f *onsole%HriteVine(g[nDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I for (cont > :I cont c> 0:I cont > cont = 0)

f clcontm > cont D dI 'Zstem%*onsole%HriteVine(cont = g . g = d = g > g = clcontm)I h *onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD[ng)I h h class Program f static void 3ain() f 7eradoraAe'e"uencia gerador > ne2 7eradoraAe'e"uencia()I *onsole%HriteVine(gAigite um nWmero 6atural bg)I gerador%Escreve'e"uencia(*onvert%@oXnt$9(*onsole%TeadVine()))I *onsole%Tead&eZ()I h h h

/////////////////////////////////////////////////////////////////////////////////////////////////////// 91/L/9:0$ atributos estticos 'upondo uma classe ``funcionarios`` com atributos nome e valeTefeicao% E.istem atributos de instRncia (diferentes valores para cada ob)eto) e atributos de classe (o atributo tem o mesmo valor para todos os ob)etos)% E.emplo prtico 0, Cma empresa de t.i tem um programa "ue possui uma classe ``ta.istas`` com atributos ``nome``, ``veGculo`` e ``preco&m``% 'abendo "ue o preo do -m rodado E Wnico e estipulado pela Prefeitura responda, a/ Jue tipo de atributo E o <nome?K Ae instRncia% b/ Jue tipo E o ``veiculo``K Ae instRncia% c/ Jue tipo E o ``preco&m``K Ae classe% E.emplo de sinta.e% class ta.ista f public string nome I !!atributos de instRncia, cada ta.ista tem um nome public string veiculo I !!atributos de instRncia, cada ta.ista tem um carro !!o atributo de classe tem static na declarao, ve)a abai.o public static double preco&m I !!atributos de classe, todos ta.istas cobram o mesmo preo h E.ercGcios 0/ using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class @a.ista

f public string nomeI !!atributos de instRncia, cada ta.ista tem um nome public string veiculoI !!atributos de instRncia, cada ta.ista tem um carro !!o atributo de classe tem static na declarao, ve)a abai.o public static double preco&m > :I !!atributos de classe, todos ta.istas cobram o mesmo preo h class Program f static void 3ain(stringlm args) f @a.ista dados > ne2 @a.ista()I string tempI 'Zstem%*onsole%HriteVine(g"ual E o preo do -mKg)I temp > *onsole%TeadVine()I !!abai.o temos o atributo de classe preco&m @a.ista%preco&m > *onvert%@oAouble(temp)I 'Zstem%*onsole%HriteVine(g"ual E o nome do ta.istaKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E o carro do ta.istaKg)I dados%veiculo > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(go nome do ta.ista E g = dados%nome = g, o carro E g = dados%veiculo = g e o preo E g = @a.ista%preco&m)I 'Zstem%*onsole%Tead&eZ()I h h h 9/ using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class @a.ista f public string nomeI !!atributos de instRncia, cada ta.ista tem um nome public string veiculoI !!atributos de instRncia, cada ta.ista tem um carro !!o atributo de classe tem static na declarao, ve)a abai.o public static double preco&m > 9%$:I !!atributos de classe, todos ta.istas cobram o mesmo preo h

class Program f static void 3ain(stringlm args) f @a.ista dados > ne2 @a.ista()I 'Zstem%*onsole%HriteVine(g"ual E o nome do ta.istaKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E o carro do ta.istaKg)I dados%veiculo > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(go nome do ta.ista E g = dados%nome = g, o carro E g = dados%veiculo = g e o preo E g = @a.ista%preco&m)I 'Zstem%*onsole%Tead&eZ()I h h h 3Etodos podem ser de instRncia (diferentes valores para cada ob)eto) ou de classe (tem o mesmo valor para todos os ob)etos)% E.emplo, na corrida de t.i, h a bandeirada especial (para domingos, feriados e madrugada), estipulada pela prefeitura como valor padro (0: Y) para todos os ta.istasI pode ser calculada com um mEtodo de classe% E.emplo 9, o valor total da corrida E calculado com um mEtodo de instRncia por"ue cada ta.ista percorre uma distRncia diferente% $/ Cm programa com atributos e mEtodos de classe e instRncia
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class @a.ista f public string nomeI !!atributos de instRncia, cada ta.ista tem um nome public string veiculoI !!atributos de instRncia, cada ta.ista tem um carro public double preco*orrida > :I !!o atributo de classe tem static na declarao, ve)a abai.o public static double preco&m > 9%$:I !!atributos de classe, todos ta.istas cobram o mesmo preo public static double preco&mEsp > :I !!um mEtodo de instRncia "ue calcula o preo da corrida public void prc*orrida(double distancia) f preco*orrida > distancia D preco&mI h !!um mEtodo de classe "ue calcula a bandeirada especial public static void bandeiradaEspecial() f preco&mEsp > preco&m D 0%0I h h

class Program f static void 3ain(stringlm args) f @a.ista dados > ne2 @a.ista()I string tempI 'Zstem%*onsole%HriteVine(g"ual E o nome do ta.istaKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E o carro do ta.istaKg)I dados%veiculo > *onsole%TeadVine()I !!abai.o temos o mEtodo prc*orrida "ue calcula o preo da corrida !!e )oga na varivel dados%preco*orrida 'Zstem%*onsole%HriteVine(g"ual E a distRnciaKg)I temp > *onsole%TeadVine()I dados%prc*orrida(*onvert%@oAouble(temp))I !!linha para efetuar o preo da bandeirada especial, sem ela o preo E : @a.ista%bandeiradaEspecial()I 'Zstem%*onsole%HriteVine(go nome do ta.ista E g = dados%nome = g, o carro E g = dados%veiculo = g e o preo total E g = dados%preco*orrida = g e o preo da bandeirada especial E g = @a.ista%preco&mEsp)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcio para nota para o dia Q/P/9:0$% \a4er um programa "ue deve ter uma classe <funcionario? com atributos nome, ta.a'indicato e salario% Aeve ter um mEtodo <pagamento? "ue desconta a ta.a'indicato do salario% O programa pergunta o nome do funcionrio, o salrio, depois escreve na tela o salrio lG"uido (salrio ( ta.a'indicato) e o nome do funcionrio% A ta.a'indicato E 9S reais% Tesposta using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class \uncionario f public string nomeI public static int ta.a'indicato > 9SI public double salario > :I public void pagamento(double salario^ruto) f salario > salario^ruto / 9SI h h class Program f static void 3ain(stringlm args) f \uncionario dados > ne2 \uncionario()I

string tempI 'Zstem%*onsole%HriteVine(gJual E o nome do funcionrioKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gJual E o salrioKg)I dados%pagamento(*onvert%@oAouble(*onsole%TeadVine()))I 'Zstem%*onsole%HriteVine(gO salrio lG"uido E Tkg = dados%salario = g e o nome do funcionrio E g = dados%nome)I 'Zstem%*onsole%Tead&eZ()I h h h //////////////////////////////////////////////////////////////////////////////////////////////////////// 0$/P/9:0$ encapsulamento

O e.ercGcio acima com encapsulamento%

using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class \uncionario f !!agora a varivel 6ome est encapsulada e s# recebe valores atravEs dos mEtodos de consulta e alterao private string 6omeI public string nome f get f return this%6omeI h set f this%6ome > valueI h h !!a forma redu4ida E public string nome fgetI setIh int ta.a'indicato > 9SI public double salario f getI setIh public double pagamento(double salario^ruto) f return this%salario > salario^ruto / ta.a'indicatoI h h class Program f

static void 3ain(stringlm args) f \uncionario dados > ne2 \uncionario()I 'Zstem%*onsole%HriteVine(gJual E o nome do funcionrioKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gJual E o salrioKg)I dados%pagamento(*onvert%@oAouble(*onsole%TeadVine()))I 'Zstem%*onsole%HriteVine(gO salrio lG"uido E Tkg = dados%salario = g e o nome do funcionrio E g = dados%nome)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcio ( 6o c#digo abai.o, encapsular os atributos de instRncia da *lasse @a.ista%


using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class @a.ista f public string nomeI public string veiculoI public double preco*orrida > :I public static double preco&m > 9%$:I public static double preco&mEsp > :I public void prc*orrida(double distancia) f preco*orrida > distancia D preco&mI h public static void bandeiradaEspecial() f preco&mEsp > preco&m D 0%0I h h class Program f static void 3ain(stringlm args) f @a.ista dados > ne2 @a.ista()I string tempI 'Zstem%*onsole%HriteVine(g"ual E o nome do ta.istaKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E o carro do ta.istaKg)I dados%veiculo > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E a distRnciaKg)I temp > *onsole%TeadVine()I dados%prc*orrida(*onvert%@oAouble(temp))I @a.ista%bandeiradaEspecial()I 'Zstem%*onsole%HriteVine(go nome do ta.ista E g = dados%nome = g, o carro E g = dados%veiculo = g e o preo total E g = dados%preco*orrida = g e o preo da bandeirada especial E g = @a.ista%preco&mEsp)I 'Zstem%*onsole%Tead&eZ()I h h h

Tesposta
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI

namespace *onsoleApplication0 f class @a.ista f public string nome f getI setI h public string veiculo f getI setI h public double preco*orrida f getI setI h public static double preco&m > 9%$:I public static double preco&mEsp > :I public double prc*orrida(double distancia) f return this%preco*orrida > distancia D preco&mI h public static void bandeiradaEspecial() f preco&mEsp > preco&m D 0%0I h h class Program f static void 3ain(stringlm args) f @a.ista dados > ne2 @a.ista()I string tempI 'Zstem%*onsole%HriteVine(g"ual E o nome do ta.istaKg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E o carro do ta.istaKg)I dados%veiculo > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(g"ual E a distRnciaKg)I temp > *onsole%TeadVine()I dados%prc*orrida(*onvert%@oAouble(temp))I @a.ista%bandeiradaEspecial()I 'Zstem%*onsole%HriteVine(go nome do ta.ista E g = dados%nome = g, o carro E g = dados%veiculo = g e o preo total E g = dados%preco*orrida = g e o preo da bandeirada especial E g = @a.ista%preco&mEsp)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcio 9 ( \a4er um programa "ue, possui 9 classes, @a.i e Program a classe @a.i possui o atributo nome, encapsulado na classe Program pergunta/se o nome, "ue E salvo na classe @a.i e depois escreve na tela <o ta.ista E nome@a.ista?%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class @a.i f private string nomeI public string 6ome f get f return this%nomeI h set f this%nome > valueI h h h class Program f

static void 3ain(stringlm args) f @a.i dados > ne2 @a.i()I 'Zstem%*onsole%HriteVine(g"uem E o ta.istaKg)I dados%6ome > 'Zstem%*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(go ta.ista E g = dados%6ome)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcio $ ( O mesmo "ue o anterior, mas agora para "ual"uer nome escrito, o programa retorna <5osE? como o nome do ta.ista%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class @a.i f private string nomeI public string 6ome f get f return this%nomeI h set f this%nome > g5osEgI h h h class Program f static void 3ain(stringlm args) f @a.i dados > ne2 @a.i()I 'Zstem%*onsole%HriteVine(g"uem E o ta.istaKg)I dados%6ome > 'Zstem%*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(go ta.ista E g = dados%6ome)I 'Zstem%*onsole%Tead&eZ()I h h h class Program f static void 3ain(stringlm args) f @a.i dados > ne2 @a.i()I 'Zstem%*onsole%HriteVine(g"uem E o ta.istaKg)I dados%6ome > 'Zstem%*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(go ta.ista E g = dados%6ome)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcio L ( \a4er um programa "ue pergunta um nWmero e para "ual"uer resultado maior "ue 0:, o programa escreve sempre 0:%

using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 3atematica f private double numAI public double 6ome f get f return this%numAI h set f this%numA > valueI if (numA ] 0:) this%numA > 0:I else this%numA > valueI h h h

class Program f static void 3ain(stringlm args) f 3atematica dados > ne2 3atematica()I 'Zstem%*onsole%HriteVine(gescrever um nWmero inteiro,g)I dados%6ome > *onvert%@oAouble('Zstem%*onsole%TeadVine())I 'Zstem%*onsole%HriteVine(go nWmero E g = dados%6ome)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcio P ( Escrever um programa "ue pergunta o nome do ta.ista e caso o nome se)a diferente de )ose, ale.andre ou lucas, o nome E definido como 2ell%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 3atematica f private string nomeI private string nome@esteI public string 6ome f get f return this%nomeI h set f this%nome@este > valueI !!um e.emplo de controle, nomes diferentes de )ose, ale.andre ou lucas so definidos como 2ell if (nome@este b> g)oseg dd nome@esteb> gale.andreg dd nome@esteb> glucasg)

this%nome > g2ellgI else this%nome > this%nome@esteI h h h

class Program f static void 3ain(stringlm args) f 3atematica dados > ne2 3atematica()I 'Zstem%*onsole%HriteVine(gescrever o nome do ta.ista,g)I dados%6ome > 'Zstem%*onsole%TeadVine()I 'Zstem%*onsole%HriteVine(go nome E g = dados%6ome)I 'Zstem%*onsole%Tead&eZ()I h h h

E.ercGcios de Teviso 0a/ Aesenvolver um programa "ue escreve <^oa noite b? na tela% 0b/ Aesenvolver um programa com duas classes, `Program` e `Educada`% A `program` chama um mEtodo da `Educada` "ue escreve <^oa noite b? na tela% 9/ Aesenvolver um programa "ue pergunta um nome e escreve <^oa noite seu6ome b? na tela% $/ Aesenvolver um programa "ue pergunta trFs nWmeros e escreve na tela <A soma dos trFs nWmeros E soma6um b?% L/ Aesenvolver um programa "ue tem 9 classes, Program e Pessoa% A classe Program, pergunta o nome e a idade manda o conteWdo dos atributos `nome` e `idade` para a classe Pessoa recupera o conteWdo dos atributos `nome` e `idade` da classe Pessoa escreve o nome e a idade na tela A classe Pessoa, arma4ena os atributos nome e idade% P/ Aesenvolver um programa "ue tem 9 classes, Program e Pessoa% A classe Program, pergunta o nome e a idade manda o conteWdo dos atributos `nome` e `idade` para a classe Pessoa A classe Pessoa, arma4ena os atributos nome e idade% escreve o nome e a idade na tela Q/ Escrever um programa com 9 classes, Program e 6umeros% 6a classe Program, o programa pergunta dois nWmeros e fa4 a soma e escreve o resultado na tela, a classe 6umeros arma4ena os dois nWmeros perguntados% / Escrever um programa com 9 classes, Program e 6umeros% A classe Program pergunta dois

nWmeros e a classe 6umeros arma4ena estes nWmeros e possui um mEtodo "ue soma os nWmeros e escreve o resultado na tela% Sa/ Escrever um programa com $ classes, Program, 6um e *ont% A classe Program pergunta dois nWmeros, a classe 6um arma4ena os nWmeros perguntados e a classe *ont fa4 a soma dos nWmeros e escreve o resultado na tela% Sb/ Escrever um programa com $ classes, Program, 6um e *ont% A classe Program pergunta dois nWmeros e escreve o resultado na tela, a classe 6um arma4ena os nWmeros perguntados e a classe *ont fa4 a soma dos nWmeros% 1/ Escrever um programa com $ classes, Program, 6um e *ont% A classe Program pergunta dois nWmeros, fa4 a soma e escreve o resultado na tela, os dois nWmeros devem ser arma4enados na classe 6um atravEs da classe *ont% 0:/ Ctili4ando arraZs escrever um programa com duas classes, uma pergunta um nWmero e a outra escreve na tela a tabuada do nWmero% 00/ Escrever um programa "ue pergunta o nome do ta.ista e caso o nome se)a diferente de )ose, ale.andre ou lucas, o nome E definido como 2ell% (encapsulamento)% 09/ \a4er um programa "ue pergunta um nWmero e para "ual"uer resultado maior "ue 0:, o programa escreve sempre 0:% (encapsulamento)% Tespostas 0b/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class Educada f public void cumprimento() f *onsole%HriteVine(g^oa noite bg)I h h class Program f static void 3ain(stringlm args) f Educada dado > ne2 Educada()I dado%cumprimento()I *onsole%Tead&eZ()I h h h

L/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class Pessoa f

!!arma4ena o nome e a idade public string nomeI public Xnt$9 idade > :I h class Program f static void 3ain(stringlm args) f Pessoa dados > ne2 Pessoa()I string tempI *onsole%HriteVine(gAigite o nome e depois a idade%g)I !!a linha abai.o envia o nome para a classe Pessoa dados%nome > *onsole%TeadVine()I !!a linha abai.o lF a idade na forma de string temp > *onsole%TeadVine()I !!a linha abai.o converte de string para inteiro e envia a idade para a classe pessoa dados%idade > *onvert%@oXnt$9(temp)I !!a linha abai.o est tra4endo o nome e a idade da classe Pessoa e escrevendo na tela *onsole%HriteVine(go nome E g = dados%nome = g e a idade E g = dados%idade = g bbbg)I *onsole%Tead&eZ()I h h h

P/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class Pessoa f !!arma4ena o nome e a idade public string nomeI public Xnt$9 idade > :I !!a linha abai.o E um mEtodo, chamado escritor, "ue escreve na tela o nome e a idade "ue vieram da classe Program public void escritor() f *onsole%HriteVine(g o nome E g = nome = g e a idade E g = idade = g bg)I h h class Program f static void 3ain(stringlm args) f Pessoa dados > ne2 Pessoa()I string tempI *onsole%HriteVine(gAigite o nome e depois a idade%g)I !!a linha abai.o envia o nome para a classe Pessoa dados%nome > *onsole%TeadVine()I !!a linha abai.o lF a idade na forma de string temp > *onsole%TeadVine()I !!a linha abai.o converte de string para inteiro e envia a idade para a classe pessoa dados%idade > *onvert%@oXnt$9(temp)I !!a linha abai.o chama o mEtodo `escritor` dados%escritor()I *onsole%Tead&eZ()I h h h

Q/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 6umero f public Xnt$9 6umero0 > :I public Xnt$9 6umero9 > :I

h class Program f static void 3ain() f string variavel@emporariaI 6umero dados > ne2 6umero()I int resultadoI 'Zstem%*onsole%HriteVine(gJual E o primeiro nWmeroKg)I variavel@emporaria > *onsole%TeadVine()I dados%6umero0 > *onvert%@oXnt$9(variavel@emporaria)I 'Zstem%*onsole%HriteVine(gJual E o segundo nWmeroKg)I variavel@emporaria > *onsole%TeadVine()I dados%6umero9 > *onvert%@oXnt$9(variavel@emporaria)I resultado > dados%6umero0 = dados%6umero9I *onsole%HriteVine(g A 'oma E,g = resultado = g bbbg)I *onsole%TeadVine()I *onsole%Tead&eZ()I h h h

Sa/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 6um f public Xnt$9 numero0 > :, numero9 > :I h class *ont f Xnt$9 soma > :I public 6um numero > ne2 6um()I public void Tesultado() f soma > numero%numero0 = numero%numero9I *onsole%HriteVine(gA soma E, g = soma)I h h class Program f static void 3ain(stringlm args) f *ont dado > ne2 *ont()I *onsole%HriteVine(gAigite dois nWmeros bg)I dado%numero%numero0 > *onvert%@oXnt$9(*onsole%TeadVine())I dado%numero%numero9 > *onvert%@oXnt$9(*onsole%TeadVine())I dado%Tesultado()I *onsole%Tead&eZ()I h h h

Sb/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 6um f public Xnt$9 numero0 > :, numero9 > :I

h class *ont f Xnt$9 soma*ont > :I public 6um numero > ne2 6um()I public Xnt$9 Tesultado() f soma*ont > numero%numero0 = numero%numero9I return soma*ontI h h class Program f static void 3ain(stringlm args) f Xnt$9 soma > :I *ont dado > ne2 *ont()I *onsole%HriteVine(gAigite dois nWmeros bg)I dado%numero%numero0 > *onvert%@oXnt$9(*onsole%TeadVine())I dado%numero%numero9 > *onvert%@oXnt$9(*onsole%TeadVine())I soma > dado%Tesultado()I *onsole%HriteVine(gA soma E, g = soma)I *onsole%Tead&eZ()I h h h

1/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 6um f public Xnt$9 numero0 > :, numero9 > :I h class *ont f public 6um numero > ne2 6um()I h class Program f static void 3ain(stringlm args) f Xnt$9 resultado > :I *ont dado > ne2 *ont()I *onsole%HriteVine(gAigite dois nWmeros bg)I dado%numero%numero0 > *onvert%@oXnt$9(*onsole%TeadVine())I dado%numero%numero9 > *onvert%@oXnt$9(*onsole%TeadVine())I resultado > dado%numero%numero0 = dado%numero%numero9I *onsole%HriteVine(gA soma E, g = resultado)I *onsole%Tead&eZ()I h h h

0:/
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class 6um f public double numA > :I public doublelm n > ne2 doublel0:mI public void tabuada()

f for (Xnt$9 contador > :I contador c 0:I contador==) f nlcontadorm > numA D (contador=0)I 'Zstem%*onsole%HriteVine(nlcontadorm)I h h h class Program f static void 3ain(stringlm args) f 6um dados*ont > ne2 6um()I double total>:I string tempI 'Zstem%*onsole%HriteVine(gAigite um nWmero,g)I temp > *onsole%TeadVine()I dados*ont%numA > *onvert%@oAouble(temp)I *onsole%*lear()I dados*ont%tabuada()I *onsole%Tead&eZ()I h h h

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $/Q/9:0$ herana reescrita de mEtodo modificadores `virtual` e `override` ;erana Juando um programa tem mais "ue duas classes e estas classes possuem atributos repetidos, utili4amos a herana, "ue consiste em fa4er com "ue as classes filhas herdem os atributos e mEtodos das classes mes% E.emplo, um programa possui, a classe funcionrio com atributos nome e idade a classe ta.ista com atributos nome, idade e cnh a classe gerente com atributos nome, idade e departamento 6este cenrio E mais prtico fa4er com "ue as classes ta.ista e gerente se)am filhas da classe funcionrio% 8irtual e Override Juando um mEtodo herdado precisa ser alterado em uma classe filha, coloca/se `virtual` no mEtodo na classe me e `override` nas classes filhas "ue tero o mEtodo alterado, mas note "ue tudo isso E para usar o mEtodo alterado com o mesmo nome em "ual"uer classe% E.emplo0 ( Este programa possui L classes, funcionrio, operador, ta.ista e program% A classe funcionrio possui os atributos, nome, idade, salrio e o mEtodo inss (SY)% A classe ta.ista possui os atributos, nome, idade, salrio, cnh e o mEtodo inss (9Y)% A classe operador possui os atributos, nome, idade, salrio, tipo e o mEtodo inss (SY)% Perceba a economia de c#digo utili4ando a herana%
using 'ZstemI using 'Zstem%*ollections%7enericI

using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class funcionario f public string nome f getI setI h public Xnt$9 idade f getI setI h public double salario f getI setI h double inss > :I !Dutili4a/se o `virtual` para poder alterar o mEtodo inss*alc public virtual double inss*alc(double sal) f inss > sal D :%:SI return this%inssI h h class operador , funcionario f h class ta.ista , funcionario f !Dutili4a/se o `override` para poder alterar o mEtodo inss*alc nas outras classes "ue herdaram tal mEtodo D! public override double inss*alc(double sal) f return sal D :%:9I h h class Program f static void 3ain(stringlm args) f ta.ista dados > ne2 ta.ista()I operador dados9 > ne2 operador()I 'Zstem%*onsole%HriteVine(gAados do ta.ista bbbg)I 'Zstem%*onsole%HriteVine(gJual o nome do ta.ista Kg)I dados%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gJual o salrio do ta.ista Kg)I dados%salario > *onvert%@oAouble(*onsole%TeadVine())I 'Zstem%*onsole%HriteVine(gJual a idade do ta.ista Kg)I dados%idade > *onvert%@oXnt$9(*onsole%TeadVine())I *onsole%*lear()I 'Zstem%*onsole%HriteVine(gAados do operador bbbg)I 'Zstem%*onsole%HriteVine(gJual o nome do operador Kg)I dados9%nome > *onsole%TeadVine()I 'Zstem%*onsole%HriteVine(gJual o salrio do operador Kg)I dados9%salario > *onvert%@oAouble(*onsole%TeadVine())I 'Zstem%*onsole%HriteVine(gJual a idade do operador Kg)I dados9%idade > *onvert%@oXnt$9(*onsole%TeadVine())I *onsole%*lear()I 'Zstem%*onsole%HriteVine(g[nDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDg)I 'Zstem%*onsole%HriteVine(gpara o ta.ista temosg)I 'Zstem%*onsole%HriteVine(gnome, g = dados%nome)I 'Zstem%*onsole%HriteVine(gidade, g = dados%idade)I 'Zstem%*onsole%HriteVine(gsalrio, g = string%\ormat(gTk f:,:%::hg, dados%salario))I 'Zstem%*onsole%HriteVine(ginss, g = string%\ormat(gTk f:,:%::hg, dados%inss*alc(dados%salario)) = g[ng)I 'Zstem%*onsole%HriteVine(gpara o operador temosg)I 'Zstem%*onsole%HriteVine(gnome, g = dados9%nome)I 'Zstem%*onsole%HriteVine(gidade, g = dados9%idade)I 'Zstem%*onsole%HriteVine(gsalrio, g = dados9%salario)I 'Zstem%*onsole%HriteVine(ginss, g = dados9%inss*alc(dados%salario))I 'Zstem%*onsole%HriteVine(gDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD[ng)I 'Zstem%*onsole%Tead&eZ()I h h h nas outras classes "ue herdaram tal mEtodo D!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

00/Q/9:0$ Polimorfismo Polimorfismo Juando um ob)eto de uma classe filha E tratado como ob)eto de uma classe me, temos o polimorfismo% As vantagens do uso do polimorfismo esto em criar classes com mEtodos especGficos "ue tratam ob)etos de "ual"uer outra classe, se este ob)eto se passar por um ob)eto da classe me% E.emplo prtico ( @em/se um programa com uma classe me chamada `Educacao` e as classes `Aluno`, `Professor`, `Escrita` e `Program`% A classe `Educacao` possui os atributos `nome` e `codigo`, do tipo string% A classe `Aluno` possui o atributo `serie`, o atributo `curso` do tipo string e os atributos codigo e nome por herana% A classe `Professor` possui o atributo `materia` do tipo string e os atributo `nome` e `codigo` por herana% A classe `Escrita` escreve na tela < o professor!aluno da matEria!curso possui o rm nWmero numTm b? recebendo ob)etos da classe Aluno ou Professor e tratando/os como se fossem da classe `Educacao`% E.emplo prtico /
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace *onsoleApplication0 f class *ontaEm^anco f public double 'aldo f setI getI h h class *ontaPoupanca , *ontaEm^anco f public int AiaAoAniversario f getI setI h h class *onta*orrente , *ontaEm^anco f public double Vimite f getI setI h h class E.trato f !!o mEtodo abai.o, chamado XmprimeE.trato^asico recebe um valor `c` do tipo *ontaEm^anco !!mas l embai.o, nas linhas finais, este mEtodo est recebendo `cp` e `cc`, "ue so dos tipos *onta*orrente e *ontaPoupanca public void XmprimeE.trato^asico(*ontaEm^anco c) f Aate@ime agora > Aate@ime%6o2I string horario > 'tring%\ormat(g f:, d ! 3 ! ZZZZ ;; , mm , ss h g, agora)I 'Zstem%*onsole%HriteVine(g AA@A , g = horario)I 'Zstem%*onsole%HriteVine(g 'AVAO , g = c%'aldo)I h h class Program f static void 3ain() f E.trato gerador > ne2 E.trato()I *ontaPoupanca cp > ne2 *ontaPoupanca()I *onta*orrente cc > ne2 *onta*orrente()I *onsole%HriteVine(gAigite o valor do saldo da conta Poupana bg)I

cp%'aldo > *onvert%@oAouble(*onsole%TeadVine())I *onsole%*lear()I *onsole%HriteVine(gAigite o valor do saldo da conta *orrente bg)I cc%'aldo > *onvert%@oAouble(*onsole%TeadVine())I *onsole%*lear()I *onsole%HriteVine(g Os saldos foram lidos na classe Program, transferidos para as classesg)I *onsole%HriteVine(gfilhas *ontaPoupana e *onta*orrente, pelo atributo saldo, herdado da classeg)I *onsole%HriteVine(gme *ontaEm^anco%[ng)I *onsole%HriteVine(g Os saldos foram escritos na tela pela classe E.trato, "ue trata osg)I *onsole%HriteVine(gsaldos como ob)etos da classe me, ou se)a, Polimorfismo% [ng)I gerador%XmprimeE.trato^asico(cp)I gerador%XmprimeE.trato^asico(cc)I *onsole%Tead&eZ()I h h h

////////////////////////////////////////////////////////////////////////////////////////////////////////// 0S/Q/9:0$ Vista de E.ercGcios para nota Pg% $S ( todos os 09 e.ercGcios 0$ ( Escrever um programa "ue utili4a herana% 0L ( O "ue E %%% a ( herana, dF 0 e.emplo (c#digo da Xnternet) b ( polimorfismo, dF 0 e.emplo (c#digo da Xnternet) c ( encapsulamento, dF 0 e.emplo (c#digo da Xnternet) mandar p! email p%gionbol%com%br assunto, lista ( *+ / Politec ( nome'ua*lasse ( tarde!noite / 0o nomeAluno Obs, mandar em um Wnico ar"uivo do `2ord` ou `pdf`% AtE dia $:/Q/9:0$% : 9o ano * far a prova em 9 escalas, os alunos de 0 atE 9: faro das ,0: atE S,$:, o restante far das S,$: atE as 1,P:% //////////////////////////////////////////////////////////////////////////////////////////////////////////////// Os alunos "ue faltaram devem fa4er o trabalho acima (em amarelo) tambEm% @rabalho de Tecuperao ( vale para todos os alunos de todas as minhas turmas "ue esto de recuperao em *+ O trabalho consiste em 0S e.ercGcios "ue podem ser resolvidos com a consulta de apenas este livro% mandar p! email p%gionbol%com%br assunto, recuperao ( *+ / Politec ( nome'ua*lasse ( tarde!noite / nomeAluno Obs, mandar em um Wnico ar"uivo do `2ord` ou `pdf`% AtE dia $:/Q/9:0$% 0/ Aesenvolver um programa "ue escreve <Oi? na tela% 9/ Aesenvolver um programa "ue escreve <^om diab? na tela% $/ Aesenvolver um programa "ue escreve <E.iste um time europeu capa4 de ganhar por

goleadab? na tela% L/ Aesenvolver um programa "ue pergunta seu nome e escreve <^om dia sr% 'eu6ome b? na tela% P/ Aesenvolver um programa "ue pergunta seu nome e sua idade e escreve <^om dia sr% 'eu6ome, sua idade E Xdade b?% Q/ Aesenvolver um programa com 9 classes "ue pergunta seu nome e escreve <^om dia sr% 'eu6ome b? na tela% / Aesenvolver um programa com 9 classes "ue pergunta seu nome e sua idade e escreve <^om dia sr% 'eu6ome, sua idade E Xdade b?% S/ Aesenvolver um programa com 9 classes "ue pergunta dois nWmeros, fa4 a soma e escreve < A soma de nA com n^ E Tesultado\inal b?% 1/ Aesenvolver um programa com 9 classes "ue pergunta dois nWmeros, fa4 a subtrao e escreve < A diferena entre nA e n^ E Tesultado\inal b?% 0:/ Aesenvolver um programa com 9 classes "ue pergunta dois nWmeros, fa4 o produto e escreve < O produto de nA com n^ E Tesultado\inal b?% 00/ Aesenvolver um programa com $ classes "ue funcione% 09/ Aesenvolver um programa com e classes e herana "ue funcione% 0$/ Aesenvolver um programa "ue possua encapsulamento e funcione% 0L/ Tesponda o "ue E herana% 0P/ Tesponda o "ue E polimorfismo% 0Q/ Tesponda o "ue E classe (dentro do conte.to da Programao Orientada)% 0 / Aesenvolver um programa "ue pergunta um nWmero e para "ual"uer resultado maior "ue 0:, o programa escreve sempre 0:% 0S/ Aesenvolver um programa "ue pergunta o nome do ta.ista e caso o nome se)a diferente de )ose, ale.andre ou lucas, o nome E definido como 2ell% //////////////////////////////////////////////////////////////////////////////////////////////////////////// $:/1/9:0$ E.ercGcios Os programas abai.o necessitam ter "ual"uer varivel declarada em uma classe e.tra e encapsulada% 0/ Escrever um programa "ue pergunta seu nome e escreve <oi seu6ome bbb? em uma label% 'e o nome for 4E, o programa escrever <oi the sniperbbb?% 9/ Escrever um programa "ue pergunta seu nome em uma inputbo. e escreve <oi seu6ome bbb?

em uma messagebo.%'e o nome for )oe, o programa escrever <hello mr% )oe blac-bbb?% $/ Escrever um programa "ue pergunta o ano do seu nascimento e escreve sua idade em uma te.tbo.% L/ Escrever um programa com uma classe e.clusiva para as variveis e para um mEtodo chamado rai4 "uadrada% O programa calcular raG4es "uadradas% O mEtodo ser encarregado de tratar as raG4es% E., se o usurio digitar 0Q, a resposta E LI se digitar /0Q, a resposta E L i% P ( Escrever um programa "ue escreve e lF um nWmero em um ar"uivo t.t% Prtica Veitura e escrita em ob)etos na 2indo2s form% Veitura, te.tbo., inputbo. Escrita, messagebo., te.tbo., label

E.emplo 0 ( Escrever uma calculadora bsica, onde as variveis so arma4enadas em uma classe e.tra )unto com um mEtodo "ue efetua rai4 "uadrada de nWmeros negativos%

Passo 0 ( *riar 0 classe com $ atributos e 0 mEtodo (Pro)ect //] Add *lass //] Add), copiar o c#digo abai.o na classe criada%
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace Hindo2s\ormsApplication0 f class *lass0 f !!perceba o encapsulamento nos atributos .,Z e 4 bbbb public double . f getI setI h public double Z f getI setI h public double 4 f getI setI h public double memo f getI setI h !!os mEtodos utili4ados na calculadora public double rai4J(double radicando) f return 3ath%'"rt(radicando)I

h h h

8amos agora escrever em \orm0%cs


using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%*omponent3odelI using 'Zstem%AataI using 'Zstem%Ara2ingI using 'Zstem%Vin"I using 'Zstem%@e.tI using 'Zstem%Hindo2s%\ormsI namespace Hindo2s\ormsApplication0 f public partial class \orm0 , \orm f !!fa4endo a referFncia para a classe *lass0, perceba "ue a"ui !!E a 0o linha da classe \orm0 *lass0 variavel*lass0 > ne2 *lass0()I public \orm0() f Xnitiali4e*omponent()I !!para ficar com foco na te.tbo. te.t^o.0%'elect()I label0%8isible > falseI h private void \orm0pVoad(ob)ect sender, EventArgs e) f !!para mudar a cor do formulrio sem alterar as propriedades do ob)eto this%^ac-*olor > *olor%'ea7reenI !!para mudar a cor do boto A* this%button %^ac-*olor > *olor%TedI !!para mudar a cor dentro da te.tbo. this%te.t^o.0%^ac-*olor > *olor%^lac-I !!para mudar a cor da fonte da te.tbo. this%te.t^o.0%\ore*olor > *olor%7reenqello2I !!para iniciali4ar os atributos como 4ero variavel*lass0%. > :I variavel*lass0%Z > :I variavel*lass0%4 > :I

variavel*lass0%memo > :I h private void button0p*lic-(ob)ect sender, EventArgs e) f !!enter variavel*lass0%4 > variavel*lass0%ZI variavel*lass0%Z > *onvert%@oAouble(te.t^o.0%@e.t)I !!para ficar com foco na te.tbo. te.t^o.0%'elect()I h private void button9p*lic-(ob)ect sender, EventArgs e) f !!= variavel*lass0%. > *onvert%@oAouble(te.t^o.0%@e.t)I te.t^o.0%@e.t > *onvert%@o'tring(variavel*lass0%Z = variavel*lass0%.)I h private void buttonQp*lic-(ob)ect sender, EventArgs e) f !!rai4 "uadrada te.t^o.0%@e.t > *onvert%@o'tring(variavel*lass0%rai4J(*onvert%@oAouble(te.t^o.0%@e.t)))I h private void button p*lic-(ob)ect sender, EventArgs e) f !!A* te.t^o.0%@e.t > (gg)I !!para ficar com foco na te.tbo. te.t^o.0%'elect()I h private void buttonSp*lic-(ob)ect sender, EventArgs e) f !!mem#ria variavel*lass0%memo > *onvert%@oAouble(te.t^o.0%@e.t)I !!para indicar "ue h dados na mem#ria label0%8isible > trueI label0%@e.t > (g3g)I h private void button1p*lic-(ob)ect sender, EventArgs e) f !!recupera a mem#ria te.t^o.0%@e.t > *onvert%@o'tring(variavel*lass0%memo)I h h h

///////////////////////////////////////////////////////////////////////////////////////////////////////////////// /0:/9:0$ criao de uma nova classe para resoluo de e"uaes de 0o e 9o graus criao de um mecanismo para aumentar o visor da calculadora criao de um mEtodo para potFncias criao de uma nova classe para resoluo de reas de triRngulos, "uadrilteros e cGrculos criao de uma nova form para os triRngulos, "uadrilteros e cGrculos

*#digos *lass0
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace Hindo2s\ormsApplication0 f class *lass0 f !!perceba o encapsulamento nos atributos .,Z e 4 bbbb public double . f getI setI h public double Z f getI setI h public double 4 f getI setI h public double memo f getI setI h

!!os mEtodos utili4ados na calculadora !!rai4 "uadrada public double rai4J(double radicando) f return 3ath%'"rt(radicando)I h !!potFncia public double potencia( double e.poentep,double basep) f return 3ath%Po2( e.poentep,basep)I h h h

*lass9
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%Vin"I using 'Zstem%@e.tI namespace Hindo2s\ormsApplication0 f !!para triRngulos, "uadrilteros e cGrculos class *lass9,*lass0 f !!o mEtodo "ue calcula a rea pela f#rmula de `heron` public double area@r(double lado0, double lado9, double lado$) f double p,areaI p > (lado0 = lado9 = lado$) ! 9I area > 3ath%'"rt(pD(p/lado0)D(p/lado9)D(p/lado$))I return areaI h !!o mEtodo "ue calcula a rea do "uadriltero por base . altura public double areaJu^;(double base", double altura", string nome\igura) f if (nome\igura >> glosangog) return base" D altura" ! 9I else return base" D altura"I h !!fa4er para cGrculos h h

\orm0
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%*omponent3odelI using 'Zstem%AataI using 'Zstem%Ara2ingI using 'Zstem%Vin"I using 'Zstem%@e.tI using 'Zstem%Hindo2s%\ormsI

namespace Hindo2s\ormsApplication0 f public partial class \orm0 , \orm f !!fa4endo a referFncia para a classe *lass0, perceba "ue a"ui !!E a 0o linha da classe \orm0 *lass0 variavel*lass0 > ne2 *lass0()I !!referFncia para a form9 \orm9 variavel\orm9 > ne2 \orm9()I public \orm0() f Xnitiali4e*omponent()I !!para ficar com foco na te.tbo. te.t^o.0%'elect()I label0%8isible > falseI h private void \orm0pVoad(ob)ect sender, EventArgs e) f !!para mudar a cor do formulrio sem alterar as propriedades do ob)eto this%^ac-*olor > *olor%'ea7reenI !!para mudar a cor do boto A* this%button %^ac-*olor > *olor%TedI !!para mudar a cor dentro da te.tbo. this%te.t^o.0%^ac-*olor > *olor%^lac-I !!para mudar a cor da fonte da te.tbo. this%te.t^o.0%\ore*olor > *olor%7reenqello2I !!para iniciali4ar os atributos como 4ero variavel*lass0%. > :I variavel*lass0%Z > :I variavel*lass0%4 > :I variavel*lass0%memo > :I h private void button0p*lic-(ob)ect sender, EventArgs e) f !!enter variavel*lass0%4 > variavel*lass0%ZI variavel*lass0%Z > *onvert%@oAouble(te.t^o.0%@e.t)I !!para ficar com foco na te.tbo. te.t^o.0%'elect()I h private void button9p*lic-(ob)ect sender, EventArgs e) f !!= variavel*lass0%. > *onvert%@oAouble(te.t^o.0%@e.t)I te.t^o.0%@e.t > *onvert%@o'tring(variavel*lass0%Z = variavel*lass0%.)I h private void buttonQp*lic-(ob)ect sender, EventArgs e) f !!rai4 "uadrada te.t^o.0%@e.t > *onvert%@o'tring(variavel*lass0%rai4J(*onvert%@oAouble(te.t^o.0%@e.t)))I h private void button p*lic-(ob)ect sender, EventArgs e) f !!A* te.t^o.0%@e.t > (gg)I !!para ficar com foco na te.tbo. te.t^o.0%'elect()I h private void buttonSp*lic-(ob)ect sender, EventArgs e) f !!mem#ria variavel*lass0%memo > *onvert%@oAouble(te.t^o.0%@e.t)I

!!para indicar "ue h dados na mem#ria label0%8isible > trueI label0%@e.t > (g3g)I h private void button1p*lic-(ob)ect sender, EventArgs e) f !!recupera a mem#ria te.t^o.0%@e.t > *onvert%@o'tring(variavel*lass0%memo)I h private void button0:p*lic-(ob)ect sender, EventArgs e) f !!tamanho da fonte this%te.t^o.0%\ont > ne2 'Zstem%Ara2ing%\ont(g3icrosoft 'ans 'erifg, *onvert%@oXnt0Q(te.t^o.0%@e.t), !!tem uma "uebra de linha a"ui 'Zstem%Ara2ing%\ont'tZle%^old, 'Zstem%Ara2ing%7raphicsCnit%Point, ((bZte)(:)))I h private void button00p*lic-(ob)ect sender, EventArgs e) f !!boto potFncia variavel*lass0%. > *onvert%@oAouble(te.t^o.0%@e.t)I te.t^o.0%@e.t > *onvert%@o'tring( variavel*lass0%potencia(variavel*lass0%., variavel*lass0%Z))I h private void button09p*lic-(ob)ect sender, EventArgs e) f !!boto geometria plana !!chama o form9 //] geometria plana variavel\orm9%'ho2()I h h h

\orm9
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%*omponent3odelI using 'Zstem%AataI using 'Zstem%Ara2ingI using 'Zstem%Vin"I using 'Zstem%@e.tI using 'Zstem%Hindo2s%\ormsI namespace Hindo2s\ormsApplication0 f public partial class \orm9 , \orm f *lass9 variavel*lass9 > ne2 *lass9()I public \orm9() f Xnitiali4e*omponent()I h private void \orm9pVoad(ob)ect sender, EventArgs e) f !!para mudar a cor do formulrio sem alterar as propriedades do ob)eto this%^ac-*olor > *olor%'ea7reenI !!para mudar a cor dentro da te.tbo. this%te.t^o.0%^ac-*olor > *olor%^lac-I !!para mudar a cor da fonte da te.tbo. this%te.t^o.0%\ore*olor > *olor%7reenqello2I this%te.t^o.9%^ac-*olor > *olor%^lac-I this%te.t^o.9%\ore*olor > *olor%7reenqello2I this%te.t^o.$%^ac-*olor > *olor%^lac-I this%te.t^o.$%\ore*olor > *olor%7reenqello2I labelQ%8isible > falseI labelS%8isible > falseI label09%8isible > falseI h

private void button0p*lic-(ob)ect sender, EventArgs e) f variavel*lass9%. > *onvert%@oAouble(te.t^o.0%@e.t)I variavel*lass9%Z > *onvert%@oAouble(te.t^o.9%@e.t)I variavel*lass9%4 > *onvert%@oAouble(te.t^o.$%@e.t)I labelQ%@e.t > *onvert%@o'tring(variavel*lass9%area@r(variavel*lass9%., variavel*lass9%Z, variavel*lass9%4))I labelQ%8isible > trueI labelS%@e.t > *onvert%@o'tring(variavel*lass9%. = variavel*lass9%Z = variavel*lass9%4)I labelS%8isible > trueI h h h

//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 90/0:/9:0$ fa4er todos os botes da form0 funcionarem implementar a calculadora financeira na form$, com a f#rmula do montante e tabela price

/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 9S/0:/9:0$ um boto para matri4es na form0 criar a formL para adio!produto de 9 matri4es de atE P.P /////////////////////////////////////////////////////////////////////////////////////////////////////////////// L/00/9:0$ a formL tambEm resolver determinantes de matri4es de atE P.P (fa4er por escalonamento) /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 0S/00/9:0$ adio de um menu na form0 com um pe"ueno manual sobre o funcionamento da calculadora tErmino dos determinantes da aula anterior /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 9P/00/9:0$ escrita!leitura em ar"uivos E.emplo 0 ( *rie 0 form com 0 te.tbo. e 0 button
using 'ZstemI

using 'Zstem%*ollections%7enericI using 'Zstem%*omponent3odelI using 'Zstem%AataI using 'Zstem%Ara2ingI using 'Zstem%Vin"I using 'Zstem%@e.tI using 'Zstem%Hindo2s%\ormsI namespace Hindo2s\ormsApplication9 f public partial class \orm0 , \orm f public \orm0() f Xnitiali4e*omponent()I h private void button0p*lic-(ob)ect sender, EventArgs e) f string variavelAr"uivo@e.to > (g*,[[temp[[aluno%t.tg)I 'Zstem%XO%'treamHriter ob)etoEscreveI ob)etoEscreve > ne2 'Zstem%XO%'treamHriter(variavelAr"uivo@e.to)I ob)etoEscreve%HriteVine(te.t^o.0%@e.t)I ob)etoEscreve%*lose()I 3essage^o.%'ho2(goperao concluGdabbbg)I h h h

6ota, perceba "ue o c#digo acima apaga a linha antiga e escreve uma nova% E.emplo 9 ( Cm c#digo com append (acumular linhas no ar"uivo)
using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%*omponent3odelI using 'Zstem%AataI using 'Zstem%Ara2ingI using 'Zstem%Vin"I using 'Zstem%@e.tI using 'Zstem%Hindo2s%\ormsI namespace Hindo2s\ormsApplication9 f public partial class \orm0 , \orm f public \orm0() f Xnitiali4e*omponent()I h private void button0p*lic-(ob)ect sender, EventArgs e) f string variavelAr"uivo@e.to > (g*,[[temp[[aluno%t.tg)I 'Zstem%XO%'treamHriter ob)etoEscreveI !!para acumular entradas no ar"uivo usamos o true ob)etoEscreve > ne2 'Zstem%XO%'treamHriter(variavelAr"uivo@e.to,true)I ob)etoEscreve%HriteVine(te.t^o.0%@e.t)I ob)etoEscreve%*lose()I 3essage^o.%'ho2(goperao concluGdabbbg)I h h h

E.emplo $ ( Cm c#digo "ue lF de um ar"uivo %t.t 6ota, criar 0 form com 0 button, 0 te.tbo. com multiline e scrollbar vertical

using 'ZstemI using 'Zstem%*ollections%7enericI using 'Zstem%*omponent3odelI using 'Zstem%AataI using 'Zstem%Ara2ingI using 'Zstem%Vin"I using 'Zstem%@e.tI using 'Zstem%Hindo2s%\ormsI namespace Hindo2s\ormsApplication9 f public partial class \orm0 , \orm f public \orm0() f Xnitiali4e*omponent()I h private void button0p*lic-(ob)ect sender, EventArgs e) f string variavelAr"uivo@e.to > (g*,[[temp[[aluno%t.tg)I string linha@e.to > (gg)I 'Zstem%XO%'treamTeader ob)etoVeI !!para acumular entradas no ar"uivo usamos o true ob)etoVe > ne2 'Zstem%XO%'treamTeader(variavelAr"uivo@e.to,true)I do f linha@e.to > linha@e.to = ob)etoVe%TeadVine() = g[r[ngI h 2hile (ob)etoVe%Pee-() b> /0)I !!o %pee-() retorna /0 "uando uma linha acaba te.t^o.0%@e.t > linha@e.toI ob)etoVe%*lose()I h h h

6ota, o ar"uivo g*,[[temp[[aluno%t.tg deve e.istir e possuir algumas linhas escritas nele% /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 9/09/9:0$ um pouco de asp

Você também pode gostar