introdu o programa o oo semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de...

40
Introdução à Programação OO ( semana 1 ) IF62C - turmas especiais S13 e S14 “Em meu mundo, existem apenas objetos e classes. Interagindo entre si, colaboram e cooperam para atingir objetivos. Bem vindo ao meu mundo.” prof. Robinson Vida Noronha 1 Wednesday, December 12, 2012

Upload: trinhdiep

Post on 30-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Introdução à Programação OO( semana 1 )

IF62C - turmas especiais S13 e S14 “Em meu mundo, existem apenas objetos e classes.

Interagindo entre si, colaboram e cooperam para atingir objetivos. Bem vindo ao meu mundo.”

prof. Robinson Vida Noronha

1Wednesday, December 12, 2012

Page 2: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Ementa da disciplina IF62C

Estratégias Algorítmicas de Resolução de Problemas.

Projeto Orientado a Objetos.

Conceitos de Padrões de Projeto e Uso de APIs.

Ambientes Integrados de Desenvolvimento e de Prototipação.

Atividades de laboratório.

2Wednesday, December 12, 2012

Page 3: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Objetivos das turmas S13 e S14Capacitar o aluno a desenvolver e documentar projetos de sistemas Orientados a Objetos.

Desenvolver a habilidade de definição de estratégias algorítmicas para obtenção de solução de problemas. Nesse contexto, o aluno deverá ser capaz de projetar Objetos, seus relacionamentos e suas interações.

Ser capaz de buscar soluções computacionais a problemas por meio do uso da Orientação a Objetos.

Outras habilidades a serem exercitadas pelos alunos são: programação Orientada a Eventos, utilização de componentes, utilização de APIs e desenvolvimento de interfaces de interação com o usuário.

Não é objetivo da disciplina e das turmas ser um curso de linguagem de programação.

3Wednesday, December 12, 2012

Page 4: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Avaliação2 trabalhos práticos:

Primeiro trabalho, peso 1

Segundo trabalho, peso 2

lista de exercícios, peso 1 2 avaliações escritas.

Primeira Avaliação, peso 1

Segunda Avaliação, peso 1

4Wednesday, December 12, 2012

Page 5: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Por que é difícil programar?

Programar ainda é uma das mais difíceis tarefas que uma

pessoa pode en"entar.

Tornar-se proficiente em programação requer talento,

criatividade, inteligencia, lógica, habilidade de contrução

e abstração, mesmo quando as melhores ferramentas estão

à disposição.

5Wednesday, December 12, 2012

Page 6: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Linguagem e Pensamento

A linguagem influencia os pensamentos.

Qualquer comunidade com interesses em comum irá naturalmente desenvolver um vocabulário especializado para os conceitos que eles discutem.

Exemplo: Inuit tem diferentes palavras para descrever a neve: wet, fluffy, heavy, icy, etc...

6Wednesday, December 12, 2012

Page 7: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Tipos de Neve...wet,

fluffy,

heavy,

icy,

fa%,

dri&y,

...

7Wednesday, December 12, 2012

Page 8: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Sem generalizar...

Teriam, os olhos do Esquimó, alguma habilidade em especial quando comparado aos nossos olhos ?

Com tempo e treinamento qualquer pessoa pode aprender a diferenciar os diferentes tipos de neve.

Como a linguagem que eu conheço (Portugues e um pouco de Inglês) não me força a fazer isso, então, não é natural para mim.

8Wednesday, December 12, 2012

Page 9: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Logo...

Para aprender a Programar e Projetar Sistemas Orientados a objetos é interessante aprender e dominar ( ao menos ) uma linguagem de programação orientada a objetos.

Exemplos de Linguagem de Programação OO: Java, C++, C#, JavaSpript, Sma%Talk, Delphi, Python, Objective-C, CLOS, etc...

9Wednesday, December 12, 2012

Page 10: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Programação Procedural - FlashBack

Centrada de maneira intensa em algoritmos.

Tudo ocorre em um método principal.

O programa tem apenas um corpo ou célula.

ou seja, alguém unicelular.

10Wednesday, December 12, 2012

Page 11: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Programação OO

Metáfora de sistemas biológicos ou “machinelike”.

Como células, os objetos de um so&ware OO não sabem o que ocorre dentro de outros objetos.

Os objetos se comunicam e trabalham juntos para executar diferentes tarefas.

Similar ao corpo humano, o coração não sabe o que ocorre no estômago, nem o pâncreas o que ocorre nos bícepes ou glúteos.

11Wednesday, December 12, 2012

Page 12: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Metáfora da POOSistemas Biológico. Diversos órgãos (objetos) que se comunicam e realizam uma ou mais tarefas.

Células e objetos seguem instruções programadas.

A dinâmica de comportamento de um sistema de so&ware emerge das interações entre muitos objetos. Cada objeto contribui desempenhando um papel ou responsabilidade.

12Wednesday, December 12, 2012

Page 13: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Female OO

13Wednesday, December 12, 2012

Page 14: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Male OO

14Wednesday, December 12, 2012

Page 15: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

O que é melhor, isto ?Procedural:

15Wednesday, December 12, 2012

Page 16: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

ou isto ?Orientado a Objetos :

16Wednesday, December 12, 2012

Page 17: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Origem da OOInventada em 1960.

foi a última solução de uma série de soluções para a “so&ware crisis”.

ideal para o desenvolvimento de sistemas complexos.

So&ware Orientado a Objetos e Sistemas Orientados a Objetos.

Linguagens de Programação Puras e Inpuras.

17Wednesday, December 12, 2012

Page 18: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Design Concepts

Aplicação: um conjunto de objetos interativos.

Objeto: uma implementação de um ou mais papéis (ator).

Papel: um conjunto de responsabilidades interrelacionadas

Colaboração: interação entre objetos ou papéis ou ambos.

Contrato: o que define os termos da colaboração.

18Wednesday, December 12, 2012

Page 19: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Roles (Papéis)

Nenhum objeto existe de maneira isolada. Ele é sempre parte de uma grande máquina. Logo, um objeto tem um propósito específico.

Objetos que possuem o mesmo papel podem ser intercambiados.

19Wednesday, December 12, 2012

Page 20: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Object Role Stereotypes

Propositadamente, utiliza-se oversimplificação ou estereótipos de papéis para ajudar na atividade de focar-se nas responsabilidades do objeto.

Os estereótipos podem ser úteis para:

20Wednesday, December 12, 2012

Page 21: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Object Role StereotypesInformation Holder: conhece e fornece informação.

Structurer: mantém relacionamentos entre objetos e informações a respeito desses relacionamentos.

Service Provider: executa uma tarefa e, em geral, oferece serviços computacionais.

Coordinator: reage a eventos delegando tarefas a outros.

Contro%er: toma decisões e direciona outras ações.

Interfacer: transforma informações e solicitações entre as partes 21Wednesday, December 12, 2012

Page 22: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Roles, Responsibilities and Collaborations

Um so&ware implementa um conjunto de responsabilidades.

Responsabilidades estão associadas aos papéis.

Um so&ware pode ser considerado “bom” se ele é estruturado para

efetivamente preencher o conjunto de responsabilidades definidas.

Projetar Colaborações força-nos considerar objetos como

parceiros e não como indivíduos de forma isolada.

22Wednesday, December 12, 2012

Page 23: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

O que é Design OO ?

é um processo interativo e incremental de visualizar objetos e suas responsabilidades e definir flexíveis colaborações entre eles.

23Wednesday, December 12, 2012

Page 24: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Tipos de Objetos

Domain Objects

Application-Specific Objects

Interfaces

24Wednesday, December 12, 2012

Page 25: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Domain ObjectsObjetos do Domínio ou Domain Objects representam conceitos que são familiares para os usuários e especialistas do domínio de interesse.

Por exemplo, em uma aplicação de reserva de passagens aéreas, os Domain Objects poderiam ser: reservas, aviões, assentos, destino, agenda, etc...

São os objetos que podem ser discutidos de maneira fácil entre o desenvolvedor do so&ware e o cliente.

25Wednesday, December 12, 2012

Page 26: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

O que é o Domínio?

é o conjunto de informações e serviços que o usuário ou cliente necessita.

por exemplo, em um sistema de almoxarifado, teríamos: monitorar o estoque (informação), adicionar ou remover do estoque (serviço), política de manutenção do estoque (informação e serviço)

26Wednesday, December 12, 2012

Page 27: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Application-Specific Objects

Objetos que traduzem a entrada do usuário (cliques do mouse, movimentos do joystick, por exemplo) para objetos da aplicação em execução.

Esses objetos filtram a informação do usuário e então chamam objetos apropriados para a “ação”.

27Wednesday, December 12, 2012

Page 28: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Interfaces

Uma interface descreve o vocabulário usado no diálogo entre um objeto e seus clientes.

A interface descreve os serviços e explica como solicitá-los.

28Wednesday, December 12, 2012

Page 29: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Exemplo de Interfacenúmero de dentes,

espaçamento,

A interface determina se a engrenagem pode ser colocada em uma

máquina

Um objeto implementa interfaces e afeta outros objetos.

29Wednesday, December 12, 2012

Page 30: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Information Hiding

“Não é problema seu como eu faço o meu serviço, desde que eu o faça de acordo com o que foi combinado. Eu não desejo que outros elementos vendo ou sabendo como eu conduzo o meu negócio.”

30Wednesday, December 12, 2012

Page 31: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Classes

Termo usado na matemática e no dia a dia para descrever um conjunto de coisas similares.

Descreve todos os elementos de maneira geral, mas permite que cada instância da classe variar os valores de algumas características.

Classes são abstratas e conceituais. Instâncias, por sua vez, são concretas, objetos físicos.

31Wednesday, December 12, 2012

Page 32: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Relacionamentos

Há apenas dois tipos de relacionamentos entre dois objetos:

Composição

Herança.

32Wednesday, December 12, 2012

Page 33: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Composição

é como um casamento entre os objetos. Ele é dinamico e ocorre enquanto os objetos existirem e pode ser modificado. Objetos podem dispensar parceiros e pegar novos parceiros para colaborar com ele.

um objeto tem as suas capacidades expandidas por meio dela.

33Wednesday, December 12, 2012

Page 34: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Herança

é como nascimento em uma família. Uma vez acontecido, é para sempre.

Os pais recebem o nome de SuperClass, as classes herdeiras, o nome SubClass.

A SubClass assume a todas as responsabilidades definidas na SuperClass e adiciona novas responsabilidades na sua definição.

34Wednesday, December 12, 2012

Page 35: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Organização dos Objetos

Conforme voce decompõe a sua aplicação em peças lógicas, voce precisa identificar objetos ou papéis e definir classes que implementem papéis específicos.

Objetos dinamicamente formam alianças e trabalham juntos em comunidades.

Cada objeto em uma comunidade promete preencher ou executar as responsabilidades definidas em seu contrato.

35Wednesday, December 12, 2012

Page 36: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Comunidade de Objetos

Cada objeto de uma comunidade depende de outro para fornecer respostas confiáveis e previsíveis para as solicitações.

A Comunidade é composta por diversos objetos que juntos apresentam um comportamento coletivo complexo.

36Wednesday, December 12, 2012

Page 37: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Componentes

São elementos que são definidos para serem utilizados em diferentes aplicações.

Um componente pode ser atualizado ou trocado sem a necessidade de haver uma nova configuração do ambiente.

Um componente bem projetado, independentemente de implementação, pode ser “plugado” e utilizado em qualquer aplicação orientada a objetos.

37Wednesday, December 12, 2012

Page 38: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Padrões

Os primeiros desenvolvedores, desenvolveram muitas aplicações de sucesso e estratégias para a solução de problemas. Não seria maravilhoso se esses especialistas pudessem estar ao nosso lado durante a execução de nossos projetos e compartilhar as suas perícias?

Sim -> Patterns.

38Wednesday, December 12, 2012

Page 39: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Pattern

Eles capturam a experiência de especialistas para a solução de problemas recorrentes. Representam essa experiência de uma forma de fácil leitura e de formato de fácil previsão.

Padrões incluem descrição de aspectos do problema e de sua solução.

39Wednesday, December 12, 2012

Page 40: Introdu o Programa o OO semana 1 - professorvida.com.br · ( ao menos ) uma linguagem de programação orientada a objetos. ... Sma%Talk, Delphi, Python, Objective-C, CLOS, etc

Exercício de Encerramento/

1) Imagine um determinado equipamento ou situação real onde diversos

componentes ou elementos interagem de forma a atingir uma meta ou apresentar

um comportamento.

2) Como isso poderia ser representado em objetos ou classes?

3) Que tipos de relacionamentos existem entre os elementos que voce identificou?

4) Quais as responsabilidades que voce consegue identificar?

5) É possível identificar algum estereótipo de objeto? Se sim, quais ?

40Wednesday, December 12, 2012