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
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
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
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
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
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
Tipos de Neve...wet,
fluffy,
heavy,
icy,
fa%,
dri&y,
...
7Wednesday, December 12, 2012
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
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
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
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
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
Female OO
13Wednesday, December 12, 2012
Male OO
14Wednesday, December 12, 2012
O que é melhor, isto ?Procedural:
15Wednesday, December 12, 2012
ou isto ?Orientado a Objetos :
16Wednesday, December 12, 2012
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
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
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
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
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
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
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
Tipos de Objetos
Domain Objects
Application-Specific Objects
Interfaces
24Wednesday, December 12, 2012
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
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
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
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
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
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
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
Relacionamentos
Há apenas dois tipos de relacionamentos entre dois objetos:
Composição
Herança.
32Wednesday, December 12, 2012
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
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
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
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
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
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
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
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
Recommended