desenvolvimento em .net - programaçao orientada a objectos

24
Desenvolvimento em .NET Programação Orientada a Objectos

Upload: vitor-silva

Post on 06-Jul-2015

1.705 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento em .Net - Programaçao Orientada a Objectos

Desenvolvimento em .NET

Programação Orientada a Objectos

Page 2: Desenvolvimento em .Net - Programaçao 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

Page 3: Desenvolvimento em .Net - Programaçao Orientada a Objectos

● 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

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

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

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

Exercicio● Criar novo projecto chamado 0004_Objectos

Page 8: Desenvolvimento em .Net - Programaçao Orientada a 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)

Page 9: Desenvolvimento em .Net - Programaçao Orientada a Objectos

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

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

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

Exercicio● Criar novo projecto chamado 0005_Heranca1

Page 13: Desenvolvimento em .Net - Programaçao Orientada a Objectos

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

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

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

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

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

Exercicio● Criar novo projecto chamado 0005_Heranca2

Page 19: Desenvolvimento em .Net - Programaçao Orientada a Objectos

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

OOP em Progress● Versão 10.1 suporta:

– Objectos– Herança– Interfaces– Constructors...

Page 21: Desenvolvimento em .Net - Programaçao Orientada a Objectos

● 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

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

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

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