Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Precursores da POO
Linguagem de Máquina (binário, hexadecimal)
Linguagem Assembler (Baixo Nível)
Linguagem Não-Estruturadas (Fortran, Basic)
Linguagem Estruturada (C, Pascal)
Linguagem Modular (Clipper)
Linguagem Visual (Delph, Visual Basic)
Linguagem Orientada a Objetos ( Smaltalk, C++, Java)
// constructor
public Item (String id, String description, int quantity, double price){
this.id = id;
this.description = description;
if (quantity >= 0) {
this.quantity = quantity;
}
else {
this.quantity = 0;
}
this.unit_price = price;
}
// acessor
public double getAdjustedTotal(){
double total = unit_price * quantity;
double total_discount = total * discount;
double adjusted_total = total - total_discount;
return adjusted_total;
}
// mutante
public void SetDiscount( double discount) {
if (discount <= 1.00) {
this.discount = discount;
}
else {
this.discount = 0.0;
}
}
// acessor
public double getDiscount() {
return discount;
}
// acessor
public int getQuantity() {
return quantity;
}
// mutante
public void setQuantity (int quantity) {
if (quantity >= 0) {
this.quantity = quantity;
}
}
// acessor
public String getProductID() {
return id;
}
// acessor
public String getDescription() {
return description;
}
}
// parte principal
public static void main( String [] args) {
// cria itens --- instancia
Item milk = new Item( "dairy-011", "1 gallon Milk", 2, 2.50);
Item yogurt = new Item( "dairy-032", "peach yogurt", 4,0.68);
Item bread = new Item( "bakery-023", "sliced bread", 1, 2.55);
Item soap = new Item( "househo-21", "6 pack soap", 1,4.51);
// aplica cupons
milk.SetDiscount(0.15);
// obtém preços ajustados
double milk_price = milk.getAdjustedTotal();
double yogurt_price = yogurt.getAdjustedTotal();
double bread_price = bread.getAdjustedTotal();
double soap_price = soap.getAdjustedTotal();
// imprime recibo
System.out.println("Thank you for your purchase.");
System.out.println("please come again!");
System.out.println(milk.getDescription() + "\t $" + milk_price );
System.out.println(yogurt.getDescription() + "\t $" + yogurt_price);
System.out.println(bread.getDescription() + "\t $" + bread_price);
System.out.println(soap.getDescription() + "\t $" + soap_price);
// calcula e imprime valor total
double total = milk_price + yogurt_price + bread_price + soap_price;
System.out.println("total price \t $" + total );
}
Definições:
Acessores: Dão acesso aos dados internos de um objeto. Os acessores permitem que você
mude ou recupere o valor.
Pode ser direto:
Public Double GetDiscount(){
Return Discount;
}
ou
pode realizar o processamento antes de retornar um valor:
return adjusted_total;
}
This: Referência que aponta para a instância do objeto. A instância usa essa referência
(this) para acessar suas próprias variáveis e métodos.
Polimorfismo: Ter muitas formas. Em termos de programação muitas formas significa que
um único nome pode representar um código diferente, selecionado por algum mecanismo
automático. Assim, o polimorfismo permite que um único nome expresse muitos
comportamentos diferentes.
Delegação: É o processo de um objeto passar uma mensagem para outro objeto, para
atender algum pedido.
Herança: É um mecanismo que permite a você basear uma nova classe na definição de
uma classe previamente existente. Usando herança, sua nova classe herda todos os atributos
e comportamentos presentes na classe previamente existente. Quando uma classe herda de
outra, todos os métodos e atributos que aparecem na interface da classe previamente
existente aparecerão automaticamente na interface da nova classe.
Vantagens e Objetivos da Orientação a Objetos
Natural – Não precisamos saber como um software funciona para usá-lo e sim no que ele
faz.
Confiável – Aceita alterações em uma parte do programa. È possível validar um
componente independentemente dos outros, podendo-se reutilizá-lo com confiança.
Reutilizável – Assim como os módulos, podemos utilizar objetos em muitos programas
diferentes. A POO introduz a herança para permitir que você estenda objetos existentes e o
polimorfismo, para escrever código genérico.
Manutenível – Para corrigir um erro, você simplesmente corrige o problema em um lugar.
Como a mudança no código é transparente, todos os objetos se beneficiarão.
Extensível – A POO apresenta vários recursos para estender o código. Esses recursos são:
herança, polimorfismo, sobreposição, delegação e uma validade de padrões de projeto.
Oportuno – Quando dividimos o programa em vários objetos (uma classe para cada
desenvolvedor) o desenvolvimento de cada parte pode ser em paralelo. O software natural
simplifica o projeto de sitemas complexos, porque podemos nos concentrar no problema a
resolver.
Questões:
1 – O que é programação procedural?
2 – Qual vantagem a programação procedural tem em relação à programação não-
estruturada?
3 – O que é programação modular?
4 – Quais vantagens a programação modular tem em relação a programação procedural?
5 – Liste uma deficiência da programação procedural e da modular?
6 - O que é programação orientada a objetos?
7 – Quais são as 6 vantagens e objetivos da programação orientada a objetos?
8 – Explique um dos objetivos da programação orientada a objetos.
9 – Defina os seguintes termos: classe, objeto, comportamento
10 – Como os objetos se comunicam entre si?
11 – O que é um construtor?
12 – O que é um acessor?
13 – O que é um mutante?
14 – O que é this ?