Linguagens Poo
Upcoming SlideShare
Loading in...5
×
 

Linguagens Poo

on

  • 3,032 views

 

Statistics

Views

Total Views
3,032
Views on SlideShare
3,006
Embed Views
26

Actions

Likes
0
Downloads
12
Comments
0

2 Embeds 26

http://www.slideshare.net 20
http://localhost 6

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Linguagens Poo Linguagens Poo Presentation Transcript

  • Linguagens 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
  • Linguagens 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
  • Relacionamento entre classes de linguagens baseadas em objetos
  • A 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
  • A 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
  • A linguagem SmallTalk
    • Não implementa herança múltipla
    • Associação de mensagem com método em tempo de execução
    • P rograma 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 “.”)
  • Definição de classes em SmallTalk
    • class name
    • Empregado
    • superclass
    •   Object
    • Instance variable names
    • nome
    • salario
    • class variable names
    • NumEmpregados
    • class methods
    • initialize
    • NumEmpregados := 0
  • Definição de classes em SmallTalk
    • new
    • | newEmp |
    • newEmp := super new.
    • NumEmpregados := NumEmpregados + 1.
    • ^newEmp
    • instance methods
    • n ome: umNome
    • nome := umNome
    • nome
    • ^nome
    • s alario: umSalario
    • salario := umSalario
    • salario
    • ^salario
  • Definição de classes em SmallTalk
    • class name
    • Gerente
    • superclass
    • Empregado
    • i nstance variable names
    • comissao
    • instance methods
    • c omissao: umaComissao
    • comissao := umaComissao
    • salario
    • ^(salario + comissao)
    •  
  • Controle de fluxo 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
    • ]
  • Programa 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 ”
  • A 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 u s ada para várias aplicações: depende das bibliotecas de classes
  • A 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
  • A 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
  • C lasses em Object Pascal
    • unit 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);
  • C lasses em Object Pascal
    • function ObtemSalario: real; virtual ;
    • procedure AtualizaComissao( umaComissao: real); virtual ; abstract ;
    • class procedure Inicializa;
    • end ;
    •   TGerente = class (TEmpregado)
    • privat e
    • Comissao: real;
    • public
    • construtor Create;
    • procedure AtualizaComissao( umaComissao: real); override ;
    • function ObtemSalario; real; override ;
    • end ;
  • C lasses em Object Pascal
    • var
    • Empregado: TEmpregado;
    • Gerente: TGerente;
    • implementation
    • var
    • NumeroDeEmpregados;
    • class procedure TEmpregado.Inicializa;
    • begin
    • NumeroDeEmpregados := 0;
    • end ;
  • C lasses 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 ;
  • C lasses 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 ;
  • C lasses em Object Pascal
    • function TEmpregado.ObtemSalario : real;
    • begin
    • ObtemSalario := Salario;
    • end ;
    • constructor TGerente.Create;
    • begin
    • inherited Create;
    • Comissao := 0.0;
    • end ;
  • C lasses em Object Pascal
    • procedure TGerente.AtualizaComissao (umaComissao: real);
    • begin
    • Comissao := umaComissao;
    • end ;
    • function TGerente.ObtemSalario : real;
    • begin
    • ObtemSalario := Salario + Comissao;
    • end ;
  • 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
  • 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
  • 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
  • Definição de classes em C++
    • class E mpregado {
    • string nome;
    • float salario;
    • static int numeroDeEmpregados;
    • public:
    • E mpregado( string nome );
    • ~ E mpregado(){--numeroDeEmpregados;}
    • void atualizaNome(string & umNome){ nome = umNome;
    • }
    • string& obtemNome() { return nome; }
  • Definição de classes em C++
    • void atualizaSalario(float umSalario){
    • salario = umSalario;
    • }
    • virtual float obtemSalario(){
    • return salario;
    • }
    • };
    • int E mpregado::numeroDeEmpregados = 0;
    • E mpregado:: E mpregado( string umNome ) {
    • nome = umNome ;
    • salario = 0.0;
    • ++numeroDeEmpregados;
    • }
  • Definição de classes em C++
    • class Gerente : public Empregado {
    • float comissao;
    • public:
    • G erente( string nome ) ;
    • void atualizaComissao(float ); virtual float obtemSalario();
    • } ;
    • Gerente::G erente( string nome )
    • :Empregado(nome) {
    • comissao = 0.0;
    • }
  • Definição de classes em C++
    • void Gerente::
    • atualizaComissao(float umaComissao){
    • comissao = umaComissao;
    • }
    • float Gerente::obtemSalario() {
    • return (Empregado::obtemSalario() +
    • comissao);
    • }
  • A l inguagem Java
    • Sintaxe similar a C++
    • Elementos básicos da linguagem são: o bjetos, 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
  • A l inguagem 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
  • A l inguagem 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
      • p rivate
      • protected
      • public
      • friendly
  • A l inguagem 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.
  • A l inguagem 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.
  • Definição de classes em Java
    • class E mpregado {
    • private string nome;
    • private float salario;
    • private static int numeroEmpregados = 0 ;
    • public E mpregado( String nome ) {
    • nome = umNome ;
    • salario = 0.0;
    • ++numeroDeEmpregados;
    • }
    • public void set Nome( S tring umNome){ nome = umNome;
    • }
  • Definição de classes em Java
    • public String obtemNome() {
    • return nome;
    • }
    • public void setSalario (float s alario ) {
    • this. salario = umSalario;
    • }
    • public float obtemSalario(){
    • return salario;
    • }
    • };
  • Definição de classes em Java
    • class Gerente extends Empregado {
    • private float comissao;
    • public G erente( String nome ) {
    • super(nome);
    • comissao = 0.0;
    • }
    • public void set Comissao(float valor) {
    • comissao = valor;
    • }
    • public float obtemSalario() {
    • return super. obtemSalario()+comissao;
    • }
    • } ;