Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
Java
public class Employee {
private String first_name;
private String last_name;
private double wage;
public Employee( String first_name, String last_name, double wage ) {
this.first_name = first_name;
this.last_name = last_name;
this.wage = wage;
}
public double getWage() {
return wage;
}
public String getFirstName() {
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML.
Pgina 1
return first_name;
last_name:String,
Pgina 2
Java
public class CommissionedEmployee extends Employee {
private double commission;
private int
units;
public CommissionedEmployee( String first_name, String last_name,
double wage, double commission )
{
super( first_name, last_name, wage );
this.commission
= commission;
}
public double calculatePay() {
return getWage() + ( commission * units );
}
public void addSales( int units ) {
this.units = this.units + units;
}
Java
public class EmployeeExample {
public static void main( String [] args ) {
CommissionedEmployee c = new
CommissionedEmployee("Mr.","Sales",5.50,1.00);
c.addSales(5);
Print( "First Name: " + c.getFirstName() );
Print( "Last Name: " + c.getLastName() );
Pgina 3
}
public static void Print(String str)
{
Print(str);
}
Poupana
Conta Especial
Poupana premiada
Conta com cheque especial
Interface
uma
assinatura
de
mtodos.
Algumas
linguagens permitem uma progenitora e mltiplas interfaces voc obrigado a
implementar os mtodos, mas no herda suas funcionalidades.
Pgina 4
Pgina 5
Java
public class TwoDimensionalPoint
{
private double x_coord;
private double y_coord;
public TwoDimensionalPoint( double x, double y )
{
setXCoordinate( x );
setYCoordinate( y );
}
public double getXCoordinate()
{
return x_coord;
}
public void setXCoordinate( double x )
{
x_coord = x;
}
public double getYCoordinate()
{
return y_coord;
}
public void setYCoordinate( double y )
{
y_coord = y;
}
public String toString()
{
return "I am a 2 dimensional point.\n" +
"My x coordinate is: " + getXCoordinate() + "\n" +
"My y coordinate is: " + getYCoordinate();
}
}
Actionscript
class ThreeDimensionalPoint extends TwoDimensionalPoint {
private var z_coord:Number;
{
x:Number,
y:Number,
z:Number )
Pgina 6
Java
public class ThreeDimensionalPoint extends TwoDimensionalPoint {
private double z_coord;
public ThreeDimensionalPoint( double x, double y, double z ) {
super( x, y );
setZCoordinate( z );
}
public double getZCoordinate() {
return z_coord;
}
public void setZCoordinate( double z ) {
z_coord = z;
}
public String toString() {
return "I am a 3 dimensional point.\n" +
"My x coordinate is: " + getXCoordinate() + "\n" +
"My y coordinate is: " + getYCoordinate() + "\n" +
"My z coordinate is: " + getZCoordinate();
}
}
Aqui, voc tem duas classes ponto que representam pontos geomtricos. Voc
poderia usar pontos em uma ferramenta para traar grficos, em um modelador
virtual ou em um planejador de vo. Os pontos tm muitos usos prticos.
TwoDimensionalPoint contm coordenadas x e y. A classe define mtodos para obter
e configurar os pontos, assim como para criar uma representao de String da
instncia do ponto.
ThreeDimensionalPoint herda de TwoDimensionalPoint. ThreeDimensionalPoint
acrescenta a coordenada z, assim como um mtodo para recuperar o valor e para
configurar o valor. A classe tambm fornece um mtodo para obter uma
representao de String da instncia. Como ThreeDimensionalPoint herda a classe
TwoDimensionalPoint, ela tambm tem os mtodos contidos dentro de
TwoDimensionalPoint.
Esse exemplo demonstra cada tipo de mtodo.
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML.
Pgina 7
Java
public static void main( String [] args ) {
TwoDimensionalPoint two = new TwoDimensionalPoint(1,2);
ThreeDimensionalPoint three = new ThreeDimensionalPoint(1,2,3);
Print(two.toString());
Print(three.toString());
}
A figura abaixo ilustra o que voc ver aps testar o documento Flash.
Pgina 8
A seguir temos uma ilustrao de mtodo entre os objetos ponto para uma chamada
de getXCoordinate(). Uma chamada para getXCoordinate() percorrer a hierarquia
at encontrar uma definio para o mtodo.
OneDimensionalPoint
getXCoordinate()
OneDimensionalPoint
OneDimensionalPoint
TwoDimensionalPoint
TwoDimensionalPoint
getYCoordinate()
TwoDimensionalPoint
ThreeDimensionalPoint
ThreeDimensionalPoint
ThreeDimensionalPoint
getZCoordinate()
getXCoordinate()
getYCoordinate()
getZCoordinate()
Pgina 9
classes
TwoDimensionalPoint
Pgina 10
p1:TwoDimensionalPoint;
p2:TwoDimensionalPoint;
Java
Pgina 11
Pgina 12
Java
public static void main( String [] args ) {
ThreeDimensionalPoint p1 = new ThreeDimensionalPoint( 12, 12, 2 );
TwoDimensionalPoint p2
= new TwoDimensionalPoint( 16, 16 );
Line l = new Line( p1, p2 );
TwoDimensionalPoint mid = l.getMidpoint();
System.out.println( "Midpoint: (" +
mid.getXCoordinate() + "," + mid.getYCoordinate() + ")" );
System.out.println( "Distance: " + l.getDistance() );
}
Capacidade de conexo um conceito poderoso. Como voc pode enviar a uma filha
qualquer mensagem que pode ser enviada para sua progenitora, possvel trat-la
como se ela pudesse ser substituda pela progenitora. Esse o motivo pelo qual voc
no deve remover comportamentos ao criar uma filha. Se voc fizer isso, a
capacidade de conexo ser invalidada.
Um subtipo um tipo que estende outro tipo atravs de herana.
A capacidade de substituio importante, pois ela permite que voc escreva cdigo
genrico. Em vez de ter vrias instrues case ou testes if/else para ver que tipo
de ponto o programa estava usando, voc simplesmente programa seus objetos para
tratar com objetos do tipo TwoDimensionalPoint.
Pgina 13
6. Oportuno
Ela atinge esses objetivos, como segue:
Natural
A herana permite que voc modele o mundo mais naturalmente. Atravs da
herana, voc pode formar hierarquias de relacionamento complexas entre
suas classes. Como seres humanos, nossa tendncia natural querer
categorizar e agrupar os objetos que esto em torno de ns. A herana
permite que voc traga essas tendncias para a programao.
A herana tambm abrange o desejo do programador de evitar trabalho
repetitivo.
Confivel
A herana simplifica o cdigo. Quando voc programa pela diferena, voc
adiciona apenas o cdigo que descreve a diferena entre a progenitora e a
filha. Como resultado, cada classe pode ter cdigo menor. Cada classe pode
ser especializada no que faz. Menos cdigo significa menos erros.
A herana permite a reutilizao de cdigo bem testado e comprovado, como
a base de suas novas classes. A reutilizao de cdigo comprovado sempre
mais desejvel do que escrever novo cdigo.
Finalmente, o mecanismo de herana em si confivel. O mecanismo
incorporado linguagem, de modo que voc no precisa construir seu prprio
mecanismo de herana e certificar-se de que todo mundo segue suas regras.
Reutilizvel
A base da herana a reutilizao, onde voc pode reaproveitar classes
antigas para construir novas classes.
A herana permite tambm que voc reutilize classes de maneira nunca
imaginada pela pessoa que escreveu a classe. Sobrepondo e programando
pela diferena, voc pode alterar o comportamento de classes existentes e
us-las de novas maneiras.
Manutenvel
A reutilizao de cdigo testado significa que voc ter menos erros em seu
novo cdigo. E quando voc encontrar um erro em uma classe, todas as
subclasses tiraro proveito da correo.
Em vez de se aprofundar no cdigo e adicionar recursos diretamente, a
herana permite que voc pegue cdigo previamente existente e o trate como
a base da construo de uma nova classe. Todos os mtodos, atributos e
informaes de tipo se tornam parte de sua nova classe. Ao contrrio do
recorte e colagem, existe apenas uma cpia do cdigo original para manter.
Isso ajuda na manuteno, diminuindo a quantidade de cdigo que voc
precisa manter.
Se voc fosse fazer alteraes diretamente no cdigo existente, poderia
danificar a classe base e afetar partes do sistema que usem essa classe.
Extensvel
A herana torna a extenso ou especializao de classe possvel. Uma classe
antiga pode ter novas funcionalidades a qualquer momento, apenas pela
Pgina 14
Oportuno
Voc j viu como a reutilizao simples pode diminuir o tempo de
desenvolvimento. Programar pela diferena significa que existe menos cdigo
para escrever; portanto, voc deve terminar mais rapidamente. Capacidade de
substituio significa que voc pode adicionar novos recursos, sem ter de
alterar muito o cdigo j existente.
A herana tambm pode tornar os testes mais fceis, pois necessrio apenas
testar a nova funcionalidade e qualquer interao com a funcionalidade antiga.
Permission
AllPermission
BasicPermission
UnresolvedPermission
SecurityPermission
Pgina 15
Pgina 16