44
Módulo 9 Introdução à Programação Orientada a Objectos PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11º ANO Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos Prof. Luis Folgado Ferreira

Módulo 9 - Introdução à Programação Orientada a Objectos

Embed Size (px)

Citation preview

Page 1: Módulo 9 - Introdução à Programação Orientada a Objectos

Módulo 9

Introdução à Programação Orientada a Objectos

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO11º ANO

Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos

Prof. Luis Folgado Ferreira

Page 2: Módulo 9 - Introdução à Programação Orientada a Objectos

Planificação do Módulo

Módulo 9:Introdução à Programação Orientada a Objetos 

1. Características da Programação Orientada por Objetos (POO).

2. Conceito de Classe, Atributos, Métodos, e Eventos.

3. Conceito de Objeto.4. Conceito de Encapsulamento.5. Conceito de Visibilidade de Classes,

Métodos e Atributos.6. Diagramas de Classe.

7.  O ambiente de trabalho do Visual C#.

8. Objetos básicos e outras características básicas da linguagem do Visual C# e respetivo ambiente de trabalho.

 

Apresentação dos conteúdos com o auxílio do quadro e projetor de

vídeo. 

Aplicação prática dos conteúdos expostos

através do desenvolvimento de

programas.

+-30 aulas 

Observação direta Fichas de trabalho Teste de avaliação

Page 3: Módulo 9 - Introdução à Programação Orientada a Objectos

Links Interessantes

• https://msdn.microsoft.com/pt-br/library/cc580626.aspx

Page 4: Módulo 9 - Introdução à Programação Orientada a Objectos

Linguagem?

Page 5: Módulo 9 - Introdução à Programação Orientada a Objectos

Tipos de Linguagens

Linguagem Natural

Linguagem - Máquina

Linguagem Assembly

(Simbólica)

Linguagem Alto nível

Page 6: Módulo 9 - Introdução à Programação Orientada a Objectos

1 - Linguagem naturalO Português é uma linguagem natural

Linguagens

Page 7: Módulo 9 - Introdução à Programação Orientada a Objectos

2 – Linguagem-MáquinaConsiste num conjunto de números binários que somente são

entendidos pela unidade central de processamento e está relacionado com as características intrínsecas de cada processador (Unidade Aritmética eLógica + Unidade de Controlo).

Caracteriza-se por não ter qualquer tipo de ambiguidade, ou seja, a interpretação das instruções é única.

Os verdadeiros programadores programam em binário

Page 8: Módulo 9 - Introdução à Programação Orientada a Objectos

3 – Linguagem Assembly

No inicio dos anos 50 criou-se este tipo de linguagem com o objectivo de aliviar o trabalho do programador.

A linguagem assembly é apenas uma variante da linguagem máquina, em que os nomes e os símbolos substituem códigos das instruções, valores e endereços de memória.

Não existem linguagens Assembly universais. Cada processador usa a sua linguagem.

LOAD @R1, 0 JMP @R1

O Assembler é um programa que converte a linguagem Assembly na sua forma binária e armazena o resultado numa memória externa para posterior utilização.

Page 9: Módulo 9 - Introdução à Programação Orientada a Objectos

4 - Linguagem de Programação de Alto-Nível

Linguagem de alto nível está muito mais próxima do programador do que do dispositivo, ou seja, é uma linguagem muito mais intuitiva.Sem as ambiguidades e imprecisões de uma linguagem natural, mas não tão penosa de utilizar como a linguagem máquina, exemplo:

if (x == 1) System.out.println(“X é igual a 1”); Tradução: Caso a variável x contenha neste momento o valor 1, escreve no monitor a frase: X é igual a 1

Page 10: Módulo 9 - Introdução à Programação Orientada a Objectos

5 – Vantagens de linguagens de Alto-Nível

• Especificação de muitas instruções de forma abreviada.

• Portáveis - Podem ser usadas em computadores diferentes com

poucas modificações.

• Custos de reprogramação menores.

• Mais fáceis de aprender.

• Menos tempo a escrever.

• Providenciam melhor documentação.

• Detectar erros durante a implementação.

Page 11: Módulo 9 - Introdução à Programação Orientada a Objectos

Sumário

• Módulo 9:Introdução à Programação Orientada a Objetos

• Continuação do estudo das caraterísticas da POO.

Page 12: Módulo 9 - Introdução à Programação Orientada a Objectos

Características da POO

• a) Organiza os programas de uma forma mais intuitiva e próxima do mundo real.

Page 13: Módulo 9 - Introdução à Programação Orientada a Objectos

Características da POO

• b) Implica que organizemos a nossa visão do mundo e/ou de um problema em termos de objetos, dos seus atributos e operações.

Page 14: Módulo 9 - Introdução à Programação Orientada a Objectos

Características da POO• c) Um programa é visto como um conjunto de

objetos que cooperam entre si e trocam mensagens (pedidos/chamadas e respostas/devoluções) para resolver um problema.

Page 15: Módulo 9 - Introdução à Programação Orientada a Objectos

Características da POO

• d) Um objecto é o dono dos seus dados. Sempre que é necessário operar sobre estes dados faz-se através de uma operação da classe a que este pertence

Page 16: Módulo 9 - Introdução à Programação Orientada a Objectos

Características da POO

• e) Aumenta os mecanismos de abstração da linguagem, providenciando maior flexibilidade, modularidade, clareza, reutilização e robustez.

Page 17: Módulo 9 - Introdução à Programação Orientada a Objectos

O que é Programação Orientada a Objetos?

POO (oop em inglês) é uma forma especial de programar na qual se utiliza a criação de

objetos de como expressaríamos as coisas na vida real.

Com a POO temos que aprender a pensar de uma maneira distinta.

Temos que desenvolver nossos programas em termos de classes, objetos,

propriedades, métodos, etc… O

Quase todas as linguagens já existentes foram modificadas para suportar o paradigma OO.

Algumas foram originalmente desenhadas para suporte deste paradigma (JAVA). Por vezes são designadas OO puras.

Page 18: Módulo 9 - Introdução à Programação Orientada a Objectos
Page 19: Módulo 9 - Introdução à Programação Orientada a Objectos

Como surgiu?

Durante anos, os programadores dedicaram-se a construir aplicações muito parecidas que resolviam geralmente, os mesmo problemas.

Para conseguir que os esforços dos programadores possam ser utilizados por outras pessoas foi criado a POO.

Esta é uma série de normas que ajudam a uniformizar a programação de maneira a que outras pessoas possam utilizá-las e adiantar seu trabalho (Reutilizar o código).

Page 20: Módulo 9 - Introdução à Programação Orientada a Objectos
Page 21: Módulo 9 - Introdução à Programação Orientada a Objectos

Então o que é uma Classe e um Objeto?

• Uma definição de classe ou de estrutura é como um modelo que especifica o que o tipo pode fazer.

• Um objeto é basicamente um bloco de memória que foi atribuído e configurado de acordo com o modelo.

• Um programa pode criar vários objetos da mesma classe. Os objetos são chamados também instâncias, e podem ser armazenados em uma variável chamada ou matriz ou na coleção.

Page 22: Módulo 9 - Introdução à Programação Orientada a Objectos

Então o que é uma Classe e um Objeto?

• O código do cliente é o código que usa essas variáveis para chamar os métodos e para aceder as propriedades públicas do objeto.

• Em uma linguagem orientada a objeto como C#, um programa típico consiste em vários objetos que interagem dinamicamente.

Page 23: Módulo 9 - Introdução à Programação Orientada a Objectos

Classes• Dados e operações sobre esses dados são

modularizados dentro de uma única entidade, a que se chama classe.

• Então o que é uma classe?

Page 24: Módulo 9 - Introdução à Programação Orientada a Objectos

A POO não é difícil, mas é uma forma especial de pensar, na maior parte das vezes depende de quem a programa.

O que leva a que existam várias formas diferentes de programar. Embora possamos fazer os programas de formas distintas, nem todas elas são corretas, o difícil não é programar orientado a objetos, mas sim, programar bem.

Programar bem é bastante importante porque assim podemos aproveitar todas as vantagens da POO.

Page 25: Módulo 9 - Introdução à Programação Orientada a Objectos

Como devemos pensar em POO?

Carro

- Cor- Modelo- Marca

Andar() Parar() Estacionar()

Pensar em termos de objetos é muito parecido a como faríamos na vida real.

Por exemplo, vamos pensar num carro. Diríamos que o carro é o elemento principal que tem uma série de características (cor, modelo ou marca).

Além das características o carro também tem uma série de funcionalidades associadas (andar, parar ou estacionar).

Page 26: Módulo 9 - Introdução à Programação Orientada a Objectos

CLASSE

PROPRIEDADES

OBJECTO

MÉTODOS

VISIBILIDADES

POLIMORFISMO

EVENTOS

HERANÇA

ENCAPSULAMENTO

Conceitos fundamentais da POO

Page 27: Módulo 9 - Introdução à Programação Orientada a Objectos
Page 28: Módulo 9 - Introdução à Programação Orientada a Objectos

Uma classe representa todos os potenciais objectos que partilham

um conjunto de atributos e operações (e.g. Carro).

Independência do contexto e modularidade (reutilização)

Abstracção (ao nível dos dados e operações sobre estes)

Encapsulamento (protecção contra alterações) Carro- matricula: int- modelo: String- ano: int- última_inspeção: int

+ últimaInspecção(): int

+ idade(): int

+ próximaInspeção(): int

+ inspeccionado()

Page 29: Módulo 9 - Introdução à Programação Orientada a Objectos

OBJECTO

(1) Instância de uma classe;

(2) É criado e manipulado durante a execução do programa;

(3) Tem identidade e valores específicos para os seus atributos.

Os objectos são exemplares de uma classe qualquer.

Quando criamos um exemplar temos que especificar a classe a

partir da qual se criará

Page 30: Módulo 9 - Introdução à Programação Orientada a Objectos

O meu_carro: Carro

matricula: 00-AA-00modelo: VW-GTI-TDI-SLKano: 2005última_inspeção: 2005últimaInspecção(): intidade(): intpróximaInspeção(): intinspeccionado()

Um objecto da classe Carro define

uma variável única com um conjunto

de valores específicos que definem o

seu estado.

Um objecto representa uma entidade no mundo real que pode ser

distintamente identificada (e.g. o meu carro)

Identificador único (a sua referência)

Estado interno

Page 31: Módulo 9 - Introdução à Programação Orientada a Objectos

Diagramas de Classes• Os diagramas de classes, visões lógicas e físicas e

o relacionamento entre objetos de uma solução são “desenhados em diagramas”.

• É uma representação da estrutura estática de um sistema, em termos de classes e da sua relação.

• A sua imagem na forma mais simples está demonstrada na figura:

Page 32: Módulo 9 - Introdução à Programação Orientada a Objectos

Diagramas de Classes

• As questões de visibilidade de atributos e operadores estão explicados na figura:

Page 33: Módulo 9 - Introdução à Programação Orientada a Objectos

Diagrama de Classes

Page 34: Módulo 9 - Introdução à Programação Orientada a Objectos

PROPRIEDADES

• As propriedades ou atributos são as características dos objectos.

• Quando definimos uma propriedade normalmente especificamos seu

nome e seu tipo.

As propriedades são as variáveis onde armazenamos

os dados relativos aos objectos.

Page 35: Módulo 9 - Introdução à Programação Orientada a Objectos

VISIBILIDADES

OS MEMBROS PODEM SER:

• Privados (private)

• Protegidos (protected)

• Públicos (public)

• Estáticas (static)

Page 36: Módulo 9 - Introdução à Programação Orientada a Objectos

MÉTODOS

Os métodos são como funções que estão associadas a um objecto.

As operações correspondem a métodos (também designados como rotinas)

que podem ser funções ou procedimentos

Os procedimentos (que alteram o estado do objecto) chamam-se

modificadores

As funções (que não alteram o estado do objecto) chamam-se inspectores

É boa politica (em geral) não incluir modificação e inspecção no mesmo

método

Os métodos que definem a inicialização dos atributos (variáveis-membro) da

classe chamam-se construtores

Page 37: Módulo 9 - Introdução à Programação Orientada a Objectos

PRIVADOS (private) (variáveis-membro da classe e operações internas)

• As variáveis Private estão apenas disponíveis no módulo em que

foram definidas.

• Utilizar a palavra-chave Private para definir a variável.

• O modificador de acesso "private" quando aplicado a um atributo

ou a um método indica que os mesmos só podem ser acedidos de

dentro da classe que os criou (encapsulamento).

• Uma classe que herde de uma superclasse com atributos

declarados como "private" só poderá ter acesso a eles através dos

métodos públicos da própria superclasse, caso contrário, não haverá

acesso a estes atributos.

Page 38: Módulo 9 - Introdução à Programação Orientada a Objectos

Protegidos (protected)

A instrução protected indica que o método ou a variável assim declarada

possa ser acedida somente dentro do pacote em que está contida através

de uma subclasse.

Públicos (public) (operações a fornecer ao exterior e constantes)

A instrução public indica que a classe, método ou variável assim

declarada possa ser acedida em qualquer lugar e a qualquer momento da

execução do programa.

Page 39: Módulo 9 - Introdução à Programação Orientada a Objectos

Estáticas (static)

A instrução static serve:

na declaração de uma variável dentro de uma classe, para se criar

uma variável que poderá ser acedida por todas as instâncias de objectos

desta classe como um variável comum.

Ou seja,

a variável criada será a mesma em todas instâncias e quando seu conteúdo

é modificado numas das instâncias, o será em todas instâncias;

na declaração de um método que deve ser acedido diretamente na classe e

não nas suas instâncias.

Page 40: Módulo 9 - Introdução à Programação Orientada a Objectos

• http://www.javacoffeebreak.com/faq/faq0002.html

Page 41: Módulo 9 - Introdução à Programação Orientada a Objectos

EVENTOS

Acção exercida sobre um objecto, e tomada pelo utilizador, sistema

operativo ou pela própria aplicação.

Um click num botão

Pressionar de uma tecla

A expiração de um período de tempo

Exemplos de eventos

Page 42: Módulo 9 - Introdução à Programação Orientada a Objectos

Word Choice• √ DO choose easily readable identifier names.

For example, a property named HorizontalAlignment is more English-readable than AlignmentHorizontal.

• √ DO favor readability over brevity.

The property name CanScrollHorizontally is better than ScrollableX (an obscure reference to the X-axis).

• X DO NOT use underscores, hyphens, or any other nonalphanumeric characters.

• X DO NOT use Hungarian notation.

• X AVOID using identifiers that conflict with keywords of widely used programming languages.

Page 43: Módulo 9 - Introdução à Programação Orientada a Objectos

Using Abbreviations and Acronyms

• X DO NOT use abbreviations or contractions as part of identifier names.

• For example, use GetWindow rather than GetWin.

• X DO NOT use any acronyms that are not widely accepted, and even if they are, only when necessary.

Page 44: Módulo 9 - Introdução à Programação Orientada a Objectos

Avoiding Language-Specific Names

• √ DO use semantically interesting names rather than language-specific keywords for type names.

For example, GetLength is a better name than GetInt.

• √ DO use a generic CLR type name, rather than a language-specific name, in the rare cases when an identifier has no semantic meaning beyond its type.

For example, a method converting to Int64 should be named ToInt64, not ToLong (because Int64 is a CLR name for the C#-specific alias long). The following table presents several base data types using the CLR type names (as well as the corresponding type names for C#, Visual Basic, and C++).

* Common Representation Language