Introdução à Programação OO

Documentos relacionados
Padrões de projeto 1

ENGENHARIA DE SOFTWARE I

2 Diagrama de Caso de Uso

Engenharia de Requisitos Estudo de Caso

Engenharia de Software III

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Orientação à Objetos. Aécio Costa

ISO 9001:2008. Alterações e Adições da nova versão

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

Planejando o aplicativo

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Introdução a Computação

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Requisitos de Software

ANALISE DE SISTEMAS. Gabriela Trevisan

Gerenciamento de Níveis de Serviço

Processos de Desenvolvimento de Software. Prof. Hélio Engholm Jr

Engenharia de Software I: Análise e Projeto de Software Usando UML

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

Decorator Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Aspectos técnicos do desenvolvimento baseado em componentes

1 UML (UNIFIED MODELING LANGUAGE)

Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

Como conduzir com sucesso um projeto de melhoria da qualidade

Processos de Desenvolvimento de Software

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

Sistemas de Gestão Ambiental O QUE MUDOU COM A NOVA ISO 14001:2004

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

Gerenciamento de Problemas

S E M A N A D O COACHING

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

Tutorial Moodle Visão do Aluno

Treinamento GVcollege Módulo Acadêmico - Pedagógico

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Manual do Atendente. Treinamento OTRS Help Desk

Modelagemde Software Orientadaa Objetos com UML

Um dos melhores Programas de Capacitação de Líderes do Mundo

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

Processo de Desenvolvimento Unificado

UML - Unified Modeling Language

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Modelos do Design de Software

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

Você sabia que a partir da compra de 150 licenças de Office 365 a migração para o Exchange Online é gratuita

Sociedade da Informação

APOO Análise e Projeto Orientado a Objetos. Requisitos

Resolução da lista de exercícios de casos de uso

UML & Padrões Aula 7. UML & Padrões - Profª Kelly C C Silva

Modelos de Maturidade. Porque estudar um Modelo de Maturidade? Descrevem as características de processos efetivos;

MVC e Camadas - Fragmental Bliki

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

INSTITUTO FEDERAL DO ESPÍRITO SANTO TECNOLOGIA EM REDES DE COMPUTADORES

Sistemas de Informação CEA460 - Gestão da Informação

Empresário. Você curte moda? Gosta de cozinhar? Não existe sorte nos negócios. Há apenas esforço, determinação, e mais esforço.

GERENCIAMENTO DO CONHECIMENTO NA EMPRESA DIGITAL

Ana Beatriz Bronzoni

Dado, Informação e Conhecimento Administração de Sist. De Inf. Prof. Esp. Lucas Santiago

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software

Trabalho em Equipe e Educação Permanente para o SUS: A Experiência do CDG-SUS-MT. Fátima Ticianel CDG-SUS/UFMT/ISC-NDS

Projeto de Arquitetura

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Abordagem de Processo: conceitos e diretrizes para sua implementação

DESENVOLVENDO COMPETÊNCIAS MATEMÁTICAS Marineusa Gazzetta *

MERITOCRACIA E COMPETÊNCIAS Avaliando Desempenho e Construindo Resultados Sustentáveis na Administração Pública

Estudos bíblicos sobre liderança Tearfund*

GARANTIA DA QUALIDADE DE SOFTWARE

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Interface Homem-Computador

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Linguagem de Programação I

Extração de Requisitos

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Profissionais de Alta Performance

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Desenvolvimento de Líderes

DPS1036 SISTEMAS DA QUALIDADE I METODOLOGIA SEIS SIGMA E MÉTODO DMAIC

Interação e Interface com Sistemas Aéreos. IV Encontro Brasileiro de Psicologia Aplicada à Aviação

Desenvolvendo Software Livre com Programação extrema

liderança conceito Sumário Liderança para potenciais e novos gestores

PHC Serviços CS. A gestão de processos de prestação de serviços

Análise de Pontos por Função

TEORIA GERAL DE SISTEMAS. Ludwig Von Bertalanffy biólogo alemão Estudos entre 1950 e 1968

21/03/2012. WorkFlow. Gestão Eletrônica de Documentos. Workflow HISTÓRICO

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

Transcrição:

Introdução à Programação OO 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

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. 2

Objetivos das turmas S13 e S14 Capacitar 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. 3

Por que é difícil programar? Programar ainda é uma das mais difíceis tarefas que uma pessoa pode enfrentar. 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. 4

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... 5

Tipos de Neve... wet, fluffy, heavy, icy, fall, drifty,... 6

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. 7

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, SmallTalk, Delphi, Python, Objective- C, CLOS, etc... 8

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. 9

Programação OO Metáfora de sistemas biológicos ou machinelike. Como células, os objetos de um software 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. 10

Metáfora da POO Sistemas 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 software emerge das interações entre muitos objetos. Cada objeto contribui desempenhando um papel ou responsabilidade. 11

Female OO 12

Male OO 13

O que é melhor, isto? Procedural: 14

ou isto? Orientado a Objetos : 15

Origem da OO Inventada em 1960. foi a última solução de uma série de soluções para a software crisis. ideal para o desenvolvimento de sistemas complexos. Software Orientado a Objetos e Sistemas Orientados a Objetos. Linguagens de Programação Puras e Inpuras. 16

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. 17

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. 18

Object Role Stereotypes Propositadamente, utiliza-se oversimplificação ou estereótipos de papéis para ajudar na atividade de focarse nas responsabilidades do objeto. Os estereótipos podem ser úteis para: 19

Object Role Stereotypes Information 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. Controller: toma decisões e direciona outras ações. Interfacer: transforma informações e solicitações entre as partes 20

Roles, Responsibilities and Collaborations Um software implementa um conjunto de responsabilidades. Responsabilidades estão associadas aos papéis. Um software 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. 21

O que é Design OO? é um processo interativo e incremental de visualizar objetos e suas responsabilidades e definir flexíveis colaborações entre eles. 22

Tipos de Objetos Domain Objects Application-Specific Objects Interfaces 23

Domain Objects Objetos 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 software e o cliente. 24

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) 25

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. 26

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. 27

Exemplo de Interface nú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. 28

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. 29

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. 30

Relacionamentos Há apenas dois tipos de relacionamentos entre dois objetos: Composição Herança. 31

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. 32

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. 33

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. 34

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. 35

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. 36

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. 37

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. 38

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? 39