O documento discute os conceitos e objetivos da programação orientada a objetos em .NET. Aborda termos como classe, objeto, método e propriedade e conceitos como abstração, encapsulamento, herança e polimorfismo. Também explica constructores, tipos de acesso, sobrecarga de métodos, uso de MyBase e o ciclo de vida de objetos.
2. Objectivos
● Saber quando, como e em que bases assentou
o aparecimento do conceito object-oriented
● Conhecer terminologia base (classe, objecto,
propriedade, método)
● Conhecer conceitos base de OOP (abstracção,
encapsulamento, herança, polimorfismo
● Ter noções de como estruturar o
desenvolvimento de um projecto OO
3. Objectivos
● Saber o que é um Constructor
● Identificar tipos de acessos (public, private,
friend, protected)
● Conhecer keyword Overloads
● Conhecer keyword MyBase
● Perceber o ciclo de vida de um objecto
● Conhecer opções OOP com Progress
4. Perspectiva Histórica
● Paradigmas de desenvolvimento
– Top-Down, Estruturado, Procedimental
– Orientado a Objectos
– Declarativo
● Cada um tem vantagens / desvantagens
● Ferramentas actuais permitem explorar o
melhor de cada paradigma
5. OOP
● Primeira linguagem OO: Simula (anos 60)
● Metáfora
● “Borrowing ideas from these and other programs, as well
as from his background in Biology, he formulated his
quot;biological analogy.quot; Kay postulated that the ideal
computer would function like a living organism; each
quot;cellquot; would behave in accord with others to
accomplish an end goal but would also be able to
function autonomously. quot;Cellsquot; could also regroup
themselves in order to attack another problem or handle
another function”
6. OOP – terminologia
● classe vs objecto
– template vs documento
– declarar vs instanciar
– exemplo: Terceiro
● métodos – o que posso fazer com o objecto
– exemplo: Terceiro.CriarFilial()
● propriedades – as caracteristicas / estado do
objecto
– exemplo: Terceiro.Morada
7. Exercicio
● Criar novo projecto chamado 0004_Objectos
8. OOP – conceitos base
● abstração – cada objecto representa uma
abstracção de uma entidade do sistema
● encapsulamento – ninguém consegue aceder
ao interior de um objecto a não ser através de
pontos bem conhecidos (métodos e
propriedades)
9. OOP – conceitos base
● Polimorfismo – várias formas
– consoante o objecto, um mesmo método poderá ter
implementações diferentes.
● exemplo: Chefe.AumentarSalario poderá ser diferente de
Colaborador.AumentarSalario
● substitui select case potencialmente interminavel:
select TipoColaborador
case “Chefe” ....
case “Colaborador” ....
10. OOP – conceitos base
● Herança
– reutilização levada ao extremo
● se Pessoa.Mover
● e Criança is Pessoa
● então Criança.Mover
– numa hierarquia de objectos os métodos e
propriedades definidos nos niveis superiores (base
class) estão disponiveis nos descendentes (derived
class)
● dentro de algumas condições...
11. OOP – conceitos base
● Herança - exemplo
– Artigo.CalcularPrecoVenda
● Preço Materia Prima + Custos Transformação + Custos
Logistica
– 1 Fato é 1 Artigo logo não preciso definir um novo
método de cálculo.
– mas se for necessário posso:
● usar aquilo que já foi definido e acrescentar mais valores
– MyBase.CalcularPrecoVenda + Custos com Pessoal
● ou simplesmente substituir a implementação já disponivel
– CalcularPrecoVenda = 0
12. Exercicio
● Criar novo projecto chamado 0005_Heranca1
13. Análise vs Programa
● Por onde começar?
– Nome / Verbo / Adjectivo
● Objecto / Método / Propriedade
● Tabela / Acção / Campo
– Nota: se este mapeamento for sempre directo
então algo está mal!
14. Constructors
● Método que cria uma instância do objecto
● Todas as classes têm o método New()
– diferença C#
● Pode haver mais do que um método New
– ver exemplo random
15. Tipos de Acesso
● parecido com âmbito das variáveis
● public, private, friend, protected
Public Todos
Private Ninguém
Friend Só descendentes
Protected Só dentro do mesmo projecto
● boa prática – escrever sempre tipo de acesso
– por defeito dentro de uma classe se não
pusermos nada num método então ele é
private
16. Overloads
● Um objecto pode ter vários métodos com o
mesmo nome
– desde que tenha parametros de entrada diferentes
– exemplos:
● Empregado.CalcularAumento()
● Empregado.CalcularAumento(percentagem)
17. MyBase
● numa estrutura hierárquica permite aceder à
classe do nivel superior
– exemplo
● Artigo (base class) => Fato (derived class)
● em Fato posso fazer MyBase.CalcularPrecoVenda
– estou-me a referir ao método CalcularPrecoVenda definido em
Artigo.
18. Exercicio
● Criar novo projecto chamado 0005_Heranca2
19. Ciclo de Vida
● Sabemos quando um objecto é criado
– New()
● Não sabemos quando é definitivamente
eliminado
– Garbage Collection
20. OOP em Progress
● Versão 10.1 suporta:
– Objectos
– Herança
– Interfaces
– Constructors...
21. OOP em Progress
● Procedures
– Can NEW a CLASS
– Can DELETE an object
– Invoke methods using object reference
– Can pass object reference as a parameter
22. OOP em Progress
● Classes
– Can RUN a procedure
– Can invoke internal procedure / udf using procedure
handle
23. Objectivos
● Saber quando, como e em que bases assentou
o aparecimento do conceito object-oriented
● Conhecer terminologia base (classe, objecto,
propriedade, método)
● Conhecer conceitos base de OOP (abstracção,
encapsulamento, herança, polimorfismo
● Ter noções de como estruturar o
desenvolvimento de um projecto OO
24. Objectivos
● Saber o que é um Constructor
● Identificar tipos de acessos (public, private,
friend, protected)
● Conhecer keyword Overloads
● Conhecer keyword MyBase
● Perceber o ciclo de vida de um objecto
● Conhecer opções OOP com Progress