Upload
vitor-silva
View
1.705
Download
0
Embed Size (px)
Citation preview
Desenvolvimento em .NET
Programação Orientada a Objectos
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
● 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
Objectivos
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
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 "biological analogy." Kay postulated that the ideal computer would function like a living organism; each "cell" would behave in accord with others to accomplish an end goal but would also be able to function autonomously. "Cells" could also regroup themselves in order to attack another problem or handle another function”
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
Exercicio● Criar novo projecto chamado 0004_Objectos
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)
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” ....
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...
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
Exercicio● Criar novo projecto chamado 0005_Heranca1
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!
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
Tipos de Acesso● parecido com âmbito das variáveis● public, private, friend, protected
● 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
Public TodosPrivate NinguémFriend Só descendentesProtected Só dentro do mesmo projecto
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)
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.
Exercicio● Criar novo projecto chamado 0005_Heranca2
Ciclo de Vida● Sabemos quando um objecto é criado
– New()● Não sabemos quando é definitivamente
eliminado– Garbage Collection
OOP em Progress● Versão 10.1 suporta:
– Objectos– Herança– Interfaces– Constructors...
● Procedures – Can NEW a CLASS– Can DELETE an object– Invoke methods using object reference– Can pass object reference as a parameter
OOP em Progress
OOP em Progress● Classes
– Can RUN a procedure– Can invoke internal procedure / udf using procedure
handle
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
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