A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Uma palavrinha importante em POO (Programação Orientada ao Objeto)

Apresentações semelhantes


Apresentação em tema: "Uma palavrinha importante em POO (Programação Orientada ao Objeto)"— Transcrição da apresentação:

1

2 Uma palavrinha importante em POO (Programação Orientada ao Objeto)
Albert Einsten reúso Vou tornar a usar a Relatividade Restrita... Vou reusá-la para desenvolver a Geral! Vou dar novo uso às minhas músicas... Vou reusá-las em um novo CD! Orlando Silva tornar a usar; dar novo uso a; efetuar a reuti- lização. Vou efetuar a reutilização das minhas músicas...Vou reusá-las em um novo ritmo! Ari Barroso

3 Homosca é um Homem e uma Mosca. Também é um Animal, Mamífero e Inseto.
Introduzindo a POO Classe Animal Herança simples Mamifero Marinho Inseto Leao Homem Peixe Mosca Barata Herança múltipla: Homosca é um Homem e uma Mosca. Também é um Animal, Mamífero e Inseto. atributos Homosca operações

4 Introduzindo a POO: brincadeirinha...
Objeto Animal Objeto Objeto Herança simples Felino Cervideo Canino Gato Leao Veado Lobo Cachorro Objeto Sou filho de famosos! Herança múltipla LeaoLobo

5 Outras três palavrinhas importantes em POO
encapsulamento; Propriedade de uma classe incluir ou encerrar atributos e operações. - # + private protected public Propriedade de uma classe transmitir atributos e operações para as suas descendentes. hereditariedade; polimorfismo. Propriedade de uma classe se apresentar sob numerosas formas; multiforme. virtual * -> new delete

6 UML (Unified Modeling Language)
é a especificação mais usada da OMG é o meio de modelar: estrutura da aplicação comportamento arquitetura processos de negócios estruturas de dados Object Management Group Veja na Internet: é “di grátis”!

7 Classes em UML e C++ (Unified Modeling Language)
em C++ class { ... }; Exemplo de anotação em UML. As anotações em UML podem se transformar em comentários C++: // de linha /* de bloco */ Nome da Classe Edsger Wybe Dijkstra i j k atributos operações Um dos pais da Programação Estruturada

8 Visibilidade em UML e C++
em C++ class { ... private: }; em C++ class { ... protected: }; # - protegida privada Dois pontos! Dois pontos! em C++ class { ... public: }; + pública Dois pontos!

9 Classes e visibilidade em UML
Se isto é tudo que você pode ver, vá estudar! Exemplo de uma classe com atributos e operações representadas. Exemplo de uma classe com atributos e operações surpimidas. Chacrinha Aluno Aluno privado - nome: String - idade: Integer protegido + setNome(nome: String) + getNome(): String # calcMens(): Double - calcDesc(): Double público

10 UML e C++: encapsulamento
Geralmente não significa obrigatoriamente. Pense sempre em REÚSO! Programamos geralmente dados privados com métodos públicos: construtores padrão, de cópia, etc (mesmo nome da classe); destrutores (~); atribuidores (=); acessores (set(s) e get(s)); etc. Métodos que realizam acesso, não confunda com assessor! Nome da Classe em C++ private: - atributos # em C++ protected: + operações em C++ public:

11 Representação de objetos em UML
Exemplo de um objeto não intitulado com classe identificada. Exemplo de um objeto com classe identificada. sublinhado luisInacioLula: Presidente : Presidente Exemplo de um objeto intitulado com classe não identificada. objeto dois pontos classe luisInacioLula:

12 Quatro pontos importantes em C++
É um construtor que não requer argumentos. Se você não definir, o C++ definirá! construtor padrão; construtor de cópia; É um construtor que possui um único parâmetro do mesmo tipo que a classe. Se você não definir, o C++ definirá! destrutor; atribuidor. É chamado automaticamente quando o objeto sai do escopo. Se você não definir, o C++ definirá! Bjarne Stroustrup Se você não definir, o C++ definirá! É um operador utilizado na atribuição (imputação de valores de um objeto para outro). Se você não definir, o C++ definirá! Criador da Linguagem C++

13 Quatro pontos importantes em C++
construtor padrão: class NomeDaClasse { ... NomeDaClasse(); }; NomeDaClasse::NomeDaClasse() { ... } Definição do construtor padrão Definição da classe NomeDaClasse *xp = new NomeDaClasse(); ... delete xp; Chamada do Construtor Chamada implícita do Construtor NomeDaClasse x; Chamada explícita do Construtor NomeDaClasse x = NomeDaClasse();

14 Quatro pontos importantes em C++
construtor de cópia: class NomeDaClasse { ... NomeDaClasse(NomeDaClasse x); }; Definição da classe NomeDaClasse::NomeDaClasse(NomeDaClasse x) { ... } Definição do construtor de cópia

15 Quatro pontos importantes em C++
destrutor: class NomeDaClasse { ... ~NomeDaClasse(); }; Definição da classe NomeDaClasse::~NomeDaClasse() { ... } Definição do destrutor

16 Quatro pontos importantes em C++
atribuidor: class NomeDaClasse { ... NomeDaClasse & operator =(NomeDaClasse &x); }; Definição da classe NomeDaClasse & NomeDaClasse::operator =(NomeDaClasse &x); { ... } Definição do atribuidor

17 Criadores da Linguagem C
Exercício 01: elabore uma classe C++ para abstrair o conceito de retângulo. Faça reúso em uma aplicação console. 30 minutos! retângulo a b Brian Kernighan Dennis Ritchie Verifique: construtor padrão; construtor de cópia; destruidor; atribuidor; acessores. Criadores da Linguagem C

18 Exercício 02: elabore uma classe C++ para abstrair o conceito de elipse. Faça reúso em uma aplicação console. 25 minutos! elipse a b Verifique: construtor padrão; construtor de cópia; destruidor; atribuidor; acessores.

19 Exercício 03: elabore uma classe C++ para abstrair o conceito de triângulo. Faça reúso em uma aplicação console. 20 minutos! triângulo a b c Verifique: construtor padrão; construtor de cópia; destruidor; atribuidor; acessores.

20 Relacionamentos em UML
“tem um” generalização (pinheiro/bananada) “é um” agregação (diamante) composição (diamante negro) Desenhos: ClasseA ClasseB ClasseA ClasseB ClasseA ClasseB ClasseA ClasseB associação dependência (seta)

21 Tipo Sivirino * 1 1 1 * 0..1 0, 1 1 1 1, 2 1 1 1 mult. quantidade de objetos * qualquer número de objetos m..n de m até n objetos (m < n) m,n m ou n objetos n exatamente n objetos 1

22 Reflexões de Gandhi Repitam comigo:
éhummm, tenhummm, éhummm, tenhummm, éhummm, tenhummm, éhummm, tenhummm, ... “é um” “tem um” Mahatma Gandhi

23 Exemplo de herança em UML
Animal Herança simples Felino Cervideo Canino Gato Leao Veado Lobo Cachorro Herança múltipla LeaoLobo

24 UML e C++: hereditariedade “é um”
em C++ class Derivada: private Base { ... }; generalização Derivada: Base private protected public em C++ class Derivada: protected Base { ... }; Derivada: Base private protected public Esta é a mais usada! Niklaus Wirth em C++ class Derivada: public Base { ... }; Derivada: Base private protected public Criador do Pascal

25 Associação em UML É a parte que cada objeto desempenha na associação.
Identifica a associação e descreve o relacionamento. Mostra quem dirige a associação. papel nome da associação direção da associação papel nome da classe multipli-cidade multipli-cidade nome da classe mult. quantidade * qualquer número de objetos m..n de m até n objetos (m < n) m,n m ou n objetos n exatamente n objetos Indica quantos objetos tomam parte na associação.

26 Exemplos de associações em UML
Aluno estudante orientado pelo orientador Professor * 1 cumpridor de tarefas requer tarefas do Aluno solicitador Professor 1 1..* Aluno Lousa 1..44 2 Odalisca Sultão 40 1

27 Exercício 04: elabore uma classe C++ para implementar o conceito de complexo. Faça reúso em uma aplicação console. 60 minutos! Pense no REÚSO em: construtores padrão; construtores de cópia; destruidor; atribuidores; acessores set(s) e get(s); operadores.

28 UML e C++: polimorfismo
classe abstrata em C++ método = 0 1.sobrescrita 4.polimorfismo paramétrico em C++: template Repare no Itálico! 2.sobrecarga T NomeDaClasse 3.polimorfis-mo de inclusão em C++: virtual * e -> new delete << >> Esteriótipo: é uma forma fixa, uma coisa que não muda, uma convenção. Em UML ele é utilizado para criar a classificação de elementos que não foram definidos como padrão.


Carregar ppt "Uma palavrinha importante em POO (Programação Orientada ao Objeto)"

Apresentações semelhantes


Anúncios Google