Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao 2014
ISCTEIUL
Projeto Pintas
Introduo
Oobjetivodesteprojetodesenvolverumaclassequesimulaumeditordeimagensestilo
Paint(doWindows),aoqualvamoschamardePintas.Oeditorserrepresentadonum
objetoqueteroperaesparaalterarumaimagemacores,podendodesenharfiguras
geomtricassobreamesma.
fornecidaumaclassepararepresentarpontos(Point)numespaobidimensional,aqual
deverserobrigatoriamenteutilizadanaresoluodoprojeto.Aclassepodeserobtidaneste
link(disponvelnapginadaUC).DeverotambmserutilizadasasclassesColore
ColorImagedoAguiaJpararepresentarasimagensacores.
Oprojetotem3partes,erecomendadoqueasmesmassejamrealizadassequencialmente.
Contudo,sealgumdosobjetivosdeumapartetardaremseralcanado(p.e.desenhode
determinadafigura),serapropriadopassarparteseguinte.Emcadaumadaspartes
deverserdesenvolvidaumaclasse.
Aviso:O projetoindividual,eemnenhumcasodevesercopiadocdigoqueser
entregue. As detees de cdigo copiado so feitas por software especializado
bastante sofisticado.Casos de plgio bvio sero penalizados coma anulao do
projeto, e logo, implicam a reprovao disciplina, bem como uma notificao ao
Conselho Pedaggicodo ISCTEIUL. Sero penalizadosdamesmaformatantoos
alunosquefornecemcdigocomoosquecopiamcdigodeoutros.
Parte 1
Objetivo:desenvolverumaclasseestticacomprocedimentosparadesenharfiguras
geomtricasnumaimagemacores(ColorImage).Paracadaumdosseguintesobjetivos
deverexistirumprocedimentoqueoconcretiza:
Desenharumacircunferncia,dadoopontodocentro(Point),
umcomprimentoparaoraio(double),eumacor.
Desenharpartedeumacircunferncia(arco),dadoopontodo
centro(Point),umcomprimentoparaoraio(double),umacor,e
umintervalodengulos.
Preencheracheioumcrculo,dadoopontodocentro(Point),
umcomprimentoparaoraio(double),eumacor.
Desenharocontornodeumaelipse,dadoopontodocentro
(Point),doiscomprimentosparaaalturaelargura(double),e
umacor.
Preencheracheioumaelipse,dadoopontodocentro(Point),
doiscomprimentosparaaalturaelargura(double),eumacor.
Desenharalinhadecontornodeumretngulo,dadoopontodo
cantosuperioresquerdo(Point),opontodocantoinferiordireito
(Point),eumacor.
Preencheracheioumretngulo,dadoopontodocantosuperior
esquerdo(Point),opontodocantoinferiordireito(Point),euma
cor.
Desenharalinhadecontornodeumretnguloarredondado,
dadoopontodocantosuperioresquerdo(Point),opontodo
cantoinferiordireito(Point),umacor,eumvalorparaotamanho
doscantosarredondados.
Preencheracheioumretnguloarredondado,dadoopontodo
cantosuperioresquerdo(Point),opontodocantoinferiordireito
(Point),umacor,eumvalorparaotamanhodoscantos
arredondados.
Todososprocedimentosdeveroteremcontaquecasoafigurageomtricaresultante
abranjapontosforadoslimitesdaimagem,oprocedimentodeverpintaratonde
possvel,nodandoorigemaerros.
Paradesenharaselipses(eoscrculos)convenienterecorrersseguintesequaes
paramtricas:
x=h+acos(t)
y=k+bsin(t)
Onde(h,k)correspondeaocentro,alargura,ebalturadaelipse.Nocasodocrculo,ae
btmomesmovalor(raio).
AclassMathdoJavaoferenceasfunesdetrignometrianecessrias.Contudo,asmesmas
tratamosngulosemradianos.Destaforma,tornasenecessrioconvertergrauspara
radianos,existindoumafunoparaisso: Math.toRadians(degrees).
Porformaatestarosprocedimentosdesenvolvidosdeformaprtica,sugeresedesenvolver
funesdetesteauxiliares,porformaaevitarestarrepetidamenteainserirvaloresparaos
parmetrosnainterfacedoAguiaJ.Exemplo:
class Tests {
static ColorImage testRectangle() {
ColorImage img = new ColorImage(200, 200);
Point a = new Point(10, 10);
Point b = new Point(100, 120);
Part1.drawRectangle(img, a, b, Color.RED);
return img;
}
}
Parte 2
Nestaparteoobjetivodesenvolverumaclassecujosobjectosdescrevemfiguras
geomtricas,agregandoinformaorelativascaractersticasdamesma.Estesobjetos
deveroterumprocedimentoquedadoumaimagem(ColorImage)eumaposio(Point),
desenhadaafiguranaimagemnessaposio.Cadafigurapodeterumdosseguintestipos:
Crculo,Elipse,Retngulo,RetnguloArredondado
Aosercriadoumobjetofiguradeverserindicadoapenasotipodefiguranumparmetro.
Todasasoutrascaratersticasdafiguradevemassumirvaloresporomisso.Recomendase
autilizaodeconstantesinteiraspararepresentarotipodefigura.Apsacriaodoobjeto
figura,oseutipojnodeverpoderseralterado,aocontrriodetodasasoutras
caratersticas(cores,tamanho,etc).
Umafiguratemumalarguraumaaltura.Poromisso,alarguraso100pxeisea
altura50pxeis.Aalturaelarguradeveropoderseralteradasisoladamente,etero
quetervaloresmaioresdoquezero.Ocrculoumcasoespecial,poisdeverser
garantidoqueaalturaelarguratmsempreomesmovalor.Destaforma,aoalterar
umadasdimensesdocrculo,aoutramudarautomaticamenteparaomesmovalor.
Umafiguratemumacorparaofundo,quetemnecessariamentequeestardefinida.
Destaforma,aoalterarestacornodeverserpermitidocoloclaindefinida.Esta
corserutilizadaparapintaracheioofundodafigura.Acordefundoporomisso
deverserocinzento.
Umafiguratemumacor,opcional,paraocontorno(linha).Aocontrriodacorde
fundo,estacorpodeestarindefinida.Casoassimseja,aoserpintadaumafigura,no
serdesenhadaalinhadecontorno.Acordefundoporomissodeverseropreto.
Porformaatestarestaclassefiguradeformaprticasugerese
tambmaquidesenvolverfunesdetesteauxiliares.Exemplo:
class Tests {
static ColorImage testRectangle() {
ColorImage img = new ColorImage(200, 200);
Figure f = new Figure(Figure.CIRCLE);
f.setLineColor(Color.BLUE);
f.setFillColor(Color.SILVER);
f.setWidth(70);
f.draw(img, new Point(60, 100));
f.draw(img, new Point(100, 100));
f.draw(img, new Point(140, 100));
return img;
}
}
Parte 3
Nestapartedeverserdesenvolvidaumaclassecujosobjetossimulamumeditorde
imagens,oPintas.Oeditorguardaainformaodeumaposioativa(Point),aqual
inicialmente(0,0).Estaposiosimulaalocalizaodorato,eindicaondeserdesenhadaa
prximafigura.Deverestardisponvelumprocedimentoparaalteraraposioativa,bem
comoumprocedimentoparadesenharfigurasdadoumobjetodaclassedesenvolvidana
Parte2.
DeverserpossvelinicializaroPintasde3formas(construtores):
Semargumentos,implicandoqueareadedesenhotemumadimensode200x200
Fornecendoalarguraealturadareadedesenho
Fornecendoalarguraealturadareadedesenho,eacordefundodamesma
Histrico
comumencontraremeditores(nosdeimagens)as
funcionalidadesdeundoeredo.Estasfuncionalidades
baseiamsenumhistricodeaes,deformaapoderanular
aesefetuadas.Undoconsisteemdesfazeraltimaao
efetuada(nesteprojeto,odesenhodaltimafigura).Por
exemplo,aoexecutarundoapsdesenharumretngulono
editorvoltariamosateroeditornoestadoanterior.Redo
consisteemrefazeraltimaaodesfeita.Porexemplo,ao
executarredoapsexecutarundoqueanulouodesenhode
umretngulo,teramosdenovoaimagemcomoretngulo
desenhadoanteriormente.Pretendesequesejam
implementadasasfuncionalidadesdeundoeredonoPintas,
existindodoisprocedimentosnaclasseprincipalparaexecutar
asmesmas.
Deformaatestaroeditorformaprtica,recomendasea
definiodeconstantescomespecificaesdefiguraspredefinidas.Exemplo:
class Tests {
static final Figure circle;
static {
circle = new Figure(Figure.CIRCLE);
circle.setLineColor(Color.BLUE);
circle.setFillColor(Color.WHITE);
circle.setWidth(70)
}
}
Avaliao e Entrega
Aviso:DeveroserentreguestodososficheirosJavadesenvolvidos,incluindooqueinclu
oscasosdeteste(casotenhasidodesenvolvido).
ArealizaodoprojetoobrigatriaparaobteraprovaoUC.Nohaverqualquer
possibilidadedeobteraprovaoUCsemrealizaroprojeto.Aclassificaonoprojetono
tempesonoclculodanotafinal.Contudo,aclassificaonoprojetodefinelimitesmximos
paraamesma.Oprojetoserclassificadodaseguinteforma:
AMuitobom(>80%):anotafinalobtidanaUCpodersernomximo20.
BBom(<=80%):anotafinalobtidanaUCpodersernomximo16.
CSuficiente(<=60%):anotafinalobtidanaUCpodersernomximo12.
DNoaprovado(<50%):implicareprovaoUC.
Oprojetoserinicialmenteavaliadoemtermosfuncionais,i.e.seasfuncionalidadesesto
corretasindependentementedaformacomoestoimplementadas,dandoumpesode~33%
paraumadastrspartes.Destaprimeiraavaliaoresultarumaclassificao(A,B,C,ou
D).Emfunodaqualidadedocdigopoderseraplicadaumapenalizaoqueimplica
descerumnvelnaclassificao,p.e.:
ClassificaofuncionalCcommqualidadedecdigo,despromovidaparaD
ClassificaofuncionalAcommqualidadedecdigo,despromovidaparaB
Osalunospoderoobterfeedbackjuntodosprofessoresdasrespetivasturmassobreo
progressodoprojetoequalidadedocdigo,edeveroseguirasrecomendaesdadas.
Aviso:Osprojetosspoderoserentreguespresencialmenteemsuporteeletrnico
(ficheiros.java),diretamenteaoprofessordaturmaaqueoalunopertence.