desenvolvimento em .net - programaçao orientada a objectos

Post on 06-Jul-2015

1.706 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related