Class21

3562 palavras 15 páginas
Programação
em
Java
para
a
Plataforma
Android
–
AULA
21


Princípios
de
Projeto
de
Classes
‐
II

• A
classe
como
unidade
de
reúso
de
código

• Princípios
que
garantem
a
boa
práCca
da
programação
orientada
a
objetos

• Principio
da
Segregação
de
Interfaces

• Principio
da
Inversão
de
Dependências

• O
padrão
de
projetos
template

• A
lei
das
interfaces
mais
genéricas


Princípio
da
Inversão
de
Dependências

• Classes
mais
abstratas
não
devem
depender
 de classes
mais
concretas.

– Na
verdade,
justamente
o
contrário
deve
 acontecer. • Em
outras
palavras:
classes
provedoras
devem
 ser mais
abstratas,
e
classes
clientes
podem
 que é uma classe ser mais
concretas.

Quando uma classe depende de outra?

O que significa uma classe ser
"mais abstrata"?

cliente? E uma classe provedora?

Princípio
da
Inversão
de
Dependências

É um truque comum na programação de interfaces de jogos desenharmos somente as formas que podem ser vistas pelo usuário.
Formas que estão fora da área de visão, ou que são muito pequenas para serem vistas não precisam ser desenhadas.
Aplicaremos essa técnica em nossa aplicação, desenhando somente aquelas formas que possuem uma área grande.
Implemente um método hasLargeArea que receba uma lista de formas, e retorne a sublista com as formas de área grande, isso é, área maior que um certo limiar.

Primeira
TentaCva
 private
List<Shape>
hasLargeArea(List<Shape>
shapes,
float
area)
{
 List<Shape>
largeShapes
=
new
LinkedList<Shape>();

Qual o for
(Shape
shape
:
shapes)
{
 problema com if
(shape
instanceof
Rectangle)
{
 esse código? Rectangle
r
=
(Rectangle)
shape;
 if
(r.getWidth()
*
r.getHeight()
>=
area)
{
largeShapes.add(r);
}
 }
else
if
(shape
instanceof
Dot)
{
 Dot
d
=
(Dot)
shape;
 if
(d.getDiameter()
*
Math.PI
>=
area)
{
largeShapes.add(d);
}
 }
else
if
(shape
instanceof
ImmutableCircle)
{
 ImmutableCircle
c
=
(ImmutableCircle)
shape;
 if
(c.r
*
Math.PI
>=

Relacionados

  • Ho Aula1
    3649 palavras | 15 páginas