desenvolvimento em .net - programaçao orientada a objectos
TRANSCRIPT
![Page 1: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/1.jpg)
Desenvolvimento em .NET
Programação Orientada a Objectos
![Page 2: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/2.jpg)
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
![Page 3: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/3.jpg)
● 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
![Page 4: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/4.jpg)
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
![Page 5: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/5.jpg)
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”
![Page 6: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/6.jpg)
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
![Page 7: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/7.jpg)
Exercicio● Criar novo projecto chamado 0004_Objectos
![Page 8: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/8.jpg)
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)
![Page 9: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/9.jpg)
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” ....
![Page 10: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/10.jpg)
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...
![Page 11: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/11.jpg)
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
![Page 12: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/12.jpg)
Exercicio● Criar novo projecto chamado 0005_Heranca1
![Page 13: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/13.jpg)
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!
![Page 14: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/14.jpg)
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
![Page 15: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/15.jpg)
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
![Page 16: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/16.jpg)
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)
![Page 17: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/17.jpg)
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.
![Page 18: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/18.jpg)
Exercicio● Criar novo projecto chamado 0005_Heranca2
![Page 19: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/19.jpg)
Ciclo de Vida● Sabemos quando um objecto é criado
– New()● Não sabemos quando é definitivamente
eliminado– Garbage Collection
![Page 20: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/20.jpg)
OOP em Progress● Versão 10.1 suporta:
– Objectos– Herança– Interfaces– Constructors...
![Page 21: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/21.jpg)
● Procedures – Can NEW a CLASS– Can DELETE an object– Invoke methods using object reference– Can pass object reference as a parameter
OOP em Progress
![Page 22: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/22.jpg)
OOP em Progress● Classes
– Can RUN a procedure– Can invoke internal procedure / udf using procedure
handle
![Page 23: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/23.jpg)
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
![Page 24: Desenvolvimento em .Net - Programaçao Orientada a Objectos](https://reader034.vdocuments.mx/reader034/viewer/2022051112/5599caa01a28abc2418b457a/html5/thumbnails/24.jpg)
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