Escolar Documentos
Profissional Documentos
Cultura Documentos
Tpicos da Aula
Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que paradigma
Conceito de paradigma Diferentes paradigmas na computao
Paradigmas de Programao
Linguagens de programao so baseadas em vrios conceitos:
Tipos de dados, variveis e armazenamento, controle, abstrao de dados, abstrao procedural, sistema de tipos,etc
A forma como estes conceitos so agrupados em uma linguagem de programao definem que paradigma suportado por esta linguagem
Paradigmas de Programao
Podemos encontrar 6 grandes paradigmas suportados pelas linguagens de programao:
Imperativo Uso de comandos, variveis e procedimentos Primeiras linguagens de programao so deste paradigma Ex: Fortran, Pascal, C, etc Orientao a Objetos Uso de classes, objetos, herana, polimorfismo, maior abstrao de dados, encapsulamento (implementao) Evoluo do paradigma imperativo Ex: Smalltalk, C++, Eiffel, Java, C#, etc
Paradigmas de Programao
Funcional Uso de expresses e funes, ausncia de variveis e comandos Ex: ML, Haskell
-- Exemplo em Haskell -- type factorial :: Integer -> Integer -- using recursion factorial 0 = 1 factorial n = n * factorial (n - 1)
Paradigmas de Programao
Lgico Relaes lgicas entre asseres Ex: Prolog, Mercury
/* Exemplo em Prolog */ mother_child(trude, sally). /* fato */ father_child(tom, sally). father_child(tom, erica). sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y). parent_child(X, Y) :- father_child(X, Y). /* clausula*/ parent_child(X, Y) :- mother_child(X, Y).
entradas
sadas,
Paradigmas de Programao
Concorrente Execuo concorrente de processos, abstrao de controle de sincronizao (inter-processos, acesso a recursos, etc) Ex: Occam, Java, Concurrent C, etc Scripting Sistema de tipos dinmica, abstrao de processamento de Strings, suporte a interfaces grficas Ex: Python, Java Script, Tcl, HTML
Objeto
Podemos definir objeto como uma entidade que possui:
Estado
Caractersticas ou propriedades do objeto
Comportamento
Operaes que o objeto pode realizar
Objeto DVD
As operaes que o DVD pode executar
Fonte: http://www.amazon.com
10
Crdito
Saldo
Nmero
Comportamento
875,32
21.342-7
Dbito
11
Crdito
Crdito
Crdito
Saldo
Saldo
Nmero
Nmero
Saldo
Saldo
Nmero
Nmero
875,32
875,32
21.342-7
21.342-7
895,32
875,32
21.342-7
21.342-7
Dbito
Dbito
12
Classe
Classe um agrupamento de objetos que tm propriedades comuns e podem realizar as mesmas operaes uma definio que descreve como objetos pertencentes classe so estruturados internamente (quais propriedades e operaes o objeto possui) Classe um conceito e o objeto uma instncia deste conceito Portanto, podemos ter vrios objetos pertencentes a mesma classe
13
Classe x Objeto
Mltiplos objetos podem ser criados partir da mesma classe Classe Conta
Saldo Nmero
Crdito
Objeto conta1
Crdito
Dbito
Objeto conta2
Crdito
Crdito
Nmero Saldo
Crdito
Nmero
Saldo
Saldo
Nmero
Saldo
Nmero
1000,32 11.056-x
875,32
875,32
21.342-7
875,32
21.342-7
21.342-7
14
Dbito
Dbito
Classe e Tipo
Tipo um conjunto de valores relacionados que so capazes de realizar as mesmas operaes
Ex: inteiro, caractere, Conta, Banco, etc
Uma classe define um tipo: o tipo cujos elementos so objetos com as mesmas propriedades e comportamento
15
Crdito
Saldo
Nmero
Comportamento
875,32
21.342-7
Atributos da conta
Dbito
17
18
Relao Cliente
Objeto do tipo Banco tm vrios objetos do tipo Conta Banco cliente de Conta
Objeto Banco1
Cria nova Conta
Objeto Conta1
Crdito
Crdito
Crdito
Nome
Saldo
Saldo
Nmero
Nmero
875,32
895,32
875,32
21.342-7
21.342-7
Transferncia
Dbito
19
Relao Herana
Classe Poupana uma verso especializada de Conta Mtodos e atributos so herdados Classe Conta
Saldo Nmero
Crdito
Dbito
Classe Poupana
Saldo Nmero Juros
Crdito
Dbito
20
OO facilita modular
programao
22
OO e Linguagens de Programao
Linguagens OO tm em objetos e classes seus elementos fundamentais para construo de programas
Estruturas da linguagem permitem mapeamento direto dos conceitos de OO
Linguagem C++
Criada por Bjarne Stroustrup em 1983 Pode ser vista quase como uma extenso da linguagem C para dar suporte a OO
Embora quase tudo escrito em C seja compatvel com C++, certos comandos podem ter comportamento diferente em C++
Ainda oferece suporte a tratamento de excees e tipos genricos Sintaxe da linguagem Java foi inspirada em C++
24
Um Programa Imperativo...
Contm
Uma funo principal, por onde comea a execuo do programa
Vrias funes auxiliares, para modularizar, dividir o cdigo em partes Importao de bibliotecas de funes
Um programa constitudo de uma ou mais classes Que podem ter sido importadas de uma biblioteca de classes
Uma classe contm um ou mais atributos e mtodos
26
Estrutura
Funo 1
Funo 2
Funo 3
Veremos depois!
28
29
30
31
32
33
36
Construtor
Tipo especial de mtodo que chamado no ato de criao de um objeto da classe desejada
Importante para fazer algumas inicializaes no objeto
Em C++, deve ter o mesmo nome da classe No possui tipo de retorno No obrigatrio definir um construtor
Existe em C++ um construtor default sem parmetros
37
38
39
new Conta(...);
Palavra reservada ordenando a criao de um objeto Construtor do objeto a ser criado
40
o computador...
new NomeDaClasse();
Cria um objeto da classe NomeDaClasse e armazena na sua memria Inicializa os atributos deste objeto usando o construtor desta classe Devolve como resultado da avaliao uma referncia (endereo da memria) para o objeto criado
41
12-3
11-2
12-3
11-2
id275
2. Inicializa o objeto
42
Construtores e new
Podemos ter mais de um construtor para um determinado objeto A escolha do construtor para inicializar os atributos determinada pela lista de argumentos, entre parnteses
new NomeDaClasse(argumentos)
O nmero, ordem e tipos dos argumentos determina o construtor
43
44
id305
12-3
11-2
id309
12-3
11-2
id312
11-5
12-4
46
Conta c(12-3,11-2);
Tipo da varivel c Conta Argumentos do construtor
47