Anda di halaman 1dari 6

Introduo

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.

Anda mungkin juga menyukai