Linguagens Poo
-
Upload
infogenius -
Category
Documents
-
view
2.212 -
download
5
Transcript of Linguagens Poo
![Page 1: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/1.jpg)
Linguagens TípicasLinguagens Típicas
Classificação das linguagens com relação ao suporte a objetos:
não baseadas em objetos
• não suporta objetos
• Pascal, C, FORTRAN e COBOL.
baseadas em objetos
• suporte a objetos
• Modula-2, ADA, CLU, Simula, SmallTalk, C++ e Object Pascal
![Page 2: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/2.jpg)
Linguagens TípicasLinguagens Típicas
Classificação das linguagens com relação ao suporte a objetos:
baseadas em classes• todo objeto deve pertencer a uma classe• CLU, Simula, SmallTalk, C++, Java e
Object Pascal• ADA e Modula-2 não possuem classes
orientadas a objetos• hierarquia de classes (herança)• ADA-95, SmallTalk, C++, Java e Object
Pascal
![Page 3: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/3.jpg)
Relacionamento entre classes de Relacionamento entre classes de linguagens baseadas em objetoslinguagens baseadas em objetos
Baseadas em Objetos
Baseadas em ClassesModula-2
Orientadas a ObjetosCLU
Java C++SmallTalk
+Classes
+Herança
![Page 4: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/4.jpg)
A linguagem SmallTalkA linguagem SmallTalk
O paradigma de objetos é levado às últimas conseqüências
A idéia fundamental: uniformidade
Um objeto representa um componente do sistema: números, filas, diretórios de discos, compiladores, etc.
A maioria dos conceitos de POO são derivados de SmallTalk
Todas as classes são descendentes da classe Object
![Page 5: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/5.jpg)
A linguagem SmallTalkA linguagem SmallTalk
Toda classe é instância de uma metaclasse
Todas as metaclasses são instâncias de uma classe chamada Metaclass
Um objeto é alocado explicitamente através da mensagem new
Não há mecanismos para destruição de um objeto
Uso de garbage collection
![Page 6: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/6.jpg)
A linguagem SmallTalkA linguagem SmallTalk Não implementa herança múltipla Associação de mensagem com método
em tempo de execução Programa em SmallTalk é formado por
uma expressão ou uma seqüência de expressões separadas por “.”
Expressões podem ser: um literal uma variável (referência a um objeto) um envio de mensagem um bloco (uma seqüência, entre colchetes,
de expressões separadas por “.”)
![Page 7: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/7.jpg)
Definição de classes em SmallTalkDefinição de classes em SmallTalkclass name
Empregado
superclass
Object
Instance variable names
nome
salario
class variable names
NumEmpregados
class methods
initialize
NumEmpregados := 0
![Page 8: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/8.jpg)
Definição de classes em SmallTalkDefinição de classes em SmallTalknew
| newEmp | newEmp := super new.NumEmpregados := NumEmpregados + 1.^newEmp
instance methodsnome: umNome
nome := umNomenome
^nomesalario: umSalario
salario := umSalariosalario
^salario
![Page 9: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/9.jpg)
Definição de classes em SmallTalkDefinição de classes em SmallTalkclass name
Gerente
superclass
Empregado
instance variable names
comissao
instance methods
comissao: umaComissao
comissao := umaComissao
salario
^(salario + comissao)
![Page 10: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/10.jpg)
Controle de fluxoControle de fluxo em SmallTalk em SmallTalk Comandos de controle de fluxo são realizados através de mensagens Exemplo de if
(numero \\ 2) = 0 ifTrue: [paridade := 'par'] ifFalse: [paridade := 'impar']
Exemplo de Loop While
i := 1.
[i <= lista size] whileTrue: [
lista at: i put: 0.
i := i + 1
]
![Page 11: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/11.jpg)
Programa exemplo em SmallTalkPrograma exemplo em SmallTalk Contagem da quantidade de números ímpar em um
vetor
» 1ª linha: declaração de duas variáveis sem tipo
» 2ª linha: “v” torna-se o apontador para um vetor
» 3ª linha: “nOdd” recebe o objeto zero
» 4ª linha: envia a mensagem “do” para “v” executar uma expressão. Para cada elemento verifica se é ímpar; testa se o resultado é verdadeiro; se for, incrementa “nOdd”
» 5ª linha: atribui “nOdd” para a primeira posição de “v”
» 6ª linha: retorna “nOdd”
| v n O d d |v : = # (1 5 2 3 6 ) .n O d d : = 0 .v d o : [ : e le m | e le m o d d ifT r u e : [n O d d : = n O d d + 1 ] ] .v a t : 1 p u t: n O d d .^ n O d d
![Page 12: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/12.jpg)
A linguagem Object PascalA linguagem Object Pascal
Desenvolvida a partir da linguagem Pascal: Objetos, Classes Herança
Teve grande destaque com o Delphi
Não permite herança múltipla
Não suporta polimorfismo paramétrico
Possui encapsulamento a nível de objeto e de Unit
Pode ser usada para várias aplicações: depende das bibliotecas de classes
![Page 13: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/13.jpg)
A linguagem Object PascalA linguagem Object Pascal
Em Delphi, bibliotecas para RAD
Todas as classes são subclasses de TObject
Componentes de uma classe: Campos: itens de dados
Métodos: subrotinas que efetuam alguma operação em um objeto. Usa construtor e destrutor
Propriedades: atributos para os quais são definidas ações para a sua leitura e escrita
![Page 14: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/14.jpg)
A linguagem Object PascalA linguagem Object Pascal
Cinco níveis de visibilidade: Public: nenhuma restrição
Protected: descendentes
Private: dentro da Unit
Published: igual a public, com informação de tipagem em tempo de execução
Automated: igual a public, servidor OLE
![Page 15: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/15.jpg)
CClasses em Object Pascallasses em Object Pascalunit Exemplo
interface
type
TEmpregado = class
protected
Nome: string[30];
Salario: real;
public
constructor Create;
destructor Destroy;
procedure AtualizaNome (umNome: string);
function ObtemNome: string;
procedure AtualizaSalario (umSalario: real);
![Page 16: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/16.jpg)
CClasses em Object Pascallasses em Object Pascalfunction ObtemSalario: real; virtual;
procedure AtualizaComissao( umaComissao: real); virtual; abstract;
class procedure Inicializa;
end;
TGerente = class (TEmpregado)
private
Comissao: real;
public
construtor Create;
procedure AtualizaComissao( umaComissao: real); override;
function ObtemSalario; real; override;
end;
![Page 17: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/17.jpg)
CClasses em Object Pascallasses em Object Pascal
var
Empregado: TEmpregado;
Gerente: TGerente;
implementation
var
NumeroDeEmpregados;
class procedure TEmpregado.Inicializa;
begin
NumeroDeEmpregados := 0;
end;
![Page 18: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/18.jpg)
CClasses em Object Pascallasses em Object Pascal
constructor TEmpregado.Create;
begin
inherited Create;
Nome := ‘’;
Salario := 0.0;
NumeroDeEmpregados := NumerosDeEmpregados + 1;
end;
destructor TEmpregado.Destroy;
begin
inherited Destroy;
NumeroDeEmpregados := NumerosDeEmpregados - 1;
end;
![Page 19: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/19.jpg)
CClasses em Object Pascallasses em Object Pascal
procedure TEmpregado.AtualizaNome (umNome: string);
begin
Nome := umNome;
end;
function TEmpregado.ObtemNome : string;
begin
ObtemNome := Nome;
end;
procedure TEmpregado.AtualizaSalario (umSalario: real);
begin
Salario := umSalario;
end;
![Page 20: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/20.jpg)
CClasses em Object Pascallasses em Object Pascal
function TEmpregado.ObtemSalario : real;
begin
ObtemSalario := Salario;
end;
constructor TGerente.Create;
begin
inherited Create;
Comissao := 0.0;
end;
![Page 21: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/21.jpg)
CClasses em Object Pascallasses em Object Pascal
procedure TGerente.AtualizaComissao (umaComissao: real);
begin
Comissao := umaComissao;
end;
function TGerente.ObtemSalario : real;
begin
ObtemSalario := Salario + Comissao;
end;
![Page 22: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/22.jpg)
A linguagem de programação C++A linguagem de programação C++
Desenvolvida a partir da linguagem C, acrescentando:
conceitos de tipos abstratos de dados
mecanismo de herança
As classes não são descendentes de uma classe única
Visibilidade dos elementos da classe: Privada (“private”): dentro da classe
Protegida (“protected”): descendentes
Pública (“public”): todos
![Page 23: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/23.jpg)
A linguagem de programação C++A linguagem de programação C++
Variáveis de classe implementadas através da cláusula static
Permite polimorfismo paramétrico
Sobrecarga de operadores
Introduz classes “amigas”: violação do encapsulamento
Possui métodos construtores e destrutores
![Page 24: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/24.jpg)
A linguagem de programação C++A linguagem de programação C++
Um objeto pode ser criado como: Automático: sempre na declaração
Estático: no início do programa somente
Dinâmico: criado com o operador new e destruído com delete
Membro: membro de outra classe
Possui métodos virtuais para a ligação dinâmica
Permite a herança múltipla
![Page 25: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/25.jpg)
Definição de classes em C++Definição de classes em C++
class Empregado {
string nome;
float salario;
static int numeroDeEmpregados;
public:
Empregado(string nome);
~Empregado(){--numeroDeEmpregados;}
void atualizaNome(string& umNome){ nome = umNome;
}
string& obtemNome() { return nome; }
![Page 26: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/26.jpg)
Definição de classes em C++Definição de classes em C++
void atualizaSalario(float umSalario){ salario = umSalario;
}virtual float obtemSalario(){return salario;
}};int Empregado::numeroDeEmpregados = 0;Empregado::Empregado(string umNome) {nome = umNome;salario = 0.0;++numeroDeEmpregados;
}
![Page 27: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/27.jpg)
Definição de classes em C++Definição de classes em C++
class Gerente : public Empregado {float comissao;
public:Gerente(string nome);void atualizaComissao(float); virtual float obtemSalario();
};
Gerente::Gerente(string nome):Empregado(nome){
comissao = 0.0; }
![Page 28: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/28.jpg)
Definição de classes em C++Definição de classes em C++
void Gerente::
atualizaComissao(float umaComissao){
comissao = umaComissao;
}
float Gerente::obtemSalario() {
return (Empregado::obtemSalario() +
comissao);
}
![Page 29: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/29.jpg)
A lA linguagem Javainguagem Java
Sintaxe similar a C++
Elementos básicos da linguagem são: objetos, classes e interfaces
Bytecode interpretado sobre máquina virtual
Independência de ambiente operacional
Herança simples e múltiplas interfaces Simulação de herança múltipla através das
interfaces
![Page 30: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/30.jpg)
A lA linguagem Javainguagem Java
Tipos fortes, com ligação dinâmica
Coleta de lixo
Sem aritmética de ponteiros
Bibliotecas portáveis
Threads e monitores Programação concorrente
Integração com C/C++ Métodos nativos
![Page 31: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/31.jpg)
A lA linguagem Javainguagem Java
Classes armazenadas em pacotes
Uso de tipos primitivos boolean, char, int, float
Uso de comandos de controle de fluxo if, switch, while, for, do…while
Modificadores de Visibilidade private protected public friendly
![Page 32: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/32.jpg)
A lA linguagem Javainguagem Java private
Aplicado à declaração de um método ou variável, o modificador private torna este elemento acessível apenas ao código da classe onde está declarado.
Aplicado à declaração de uma classe ou interface torna esta classe ou interface inacessível fora do arquivo onde está declarada.
protected Aplicado à declaração de um método ou variável
de uma classe, torna este elemento acessível apenas às classes que pertencem ao mesmo pacote desta classe, e ao código das classes que herdam desta primeira.
![Page 33: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/33.jpg)
A lA linguagem Javainguagem Java protected
Aplicado à declaração de uma classe ou interface torna esta classe ou interface visível apenas no escopo do pacote onde está declarada.
public Aplicado à declaração de um método, variável,
classe ou interface elimina qualquer restrição de visibilidade a este elemento.
friendly (Default) Aplicado à declaração de um método, variável,
classe ou interface torna o elemento acessível no pacote onde foi declarado.
![Page 34: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/34.jpg)
Definição de classes em Definição de classes em JavaJava
class Empregado {
private string nome;
private float salario;
private static int numeroEmpregados = 0;
public Empregado(String nome) {nome = umNome;salario = 0.0;++numeroDeEmpregados;
}
public void setNome(String umNome){ nome = umNome;
}
![Page 35: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/35.jpg)
Definição de classes em Definição de classes em JavaJava
public String obtemNome() {
return nome;
}
public void setSalario(float salario){
this.salario = umSalario;
}
public float obtemSalario(){
return salario;
}
};
![Page 36: Linguagens Poo](https://reader035.fdocument.pub/reader035/viewer/2022081420/5572c7cdd8b42abb378b4b9a/html5/thumbnails/36.jpg)
Definição de classes em Definição de classes em JavaJava
class Gerente extends Empregado {private float comissao;publicGerente(String nome) {super(nome);comissao = 0.0;
}publicvoid setComissao(float valor) {comissao = valor;
}publicfloat obtemSalario() {return super.obtemSalario()+comissao;
}};