Algumas propriedades dos objetos:



Documentos relacionados
PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

UML - Unified Modeling Language

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

Modelagemde Software Orientadaa Objetos com UML

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)

Análise e Projeto de Sistemas

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

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

ENGENHARIA DE SOFTWARE I

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

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

Análise e Projeto Orientados por Objetos

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Guia de utilização da notação BPMN

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

Introdução a UML. Hélder Antero Amaral Nunes haanunes@gmail.com

Um modelo é uma simplificação da realidade. Construímos modelos para compreender melhor o sistema que estamos desenvolvendo.

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

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

Processo de Desenvolvimento Unificado

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

O modelo unificado de processo. O Rational Unified Process, RUP.

Orientação à Objetos. Aécio Costa

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

Prof. Me. Marcos Echevarria

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

Wilson Moraes Góes. Novatec

Conceitos de Banco de Dados

Engenharia de Software I

A Linguagem de Modelagem Unificada (UML)

Unidade II MODELAGEM DE PROCESSOS

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

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

Prof. Marcelo Henrique dos Santos

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

2 Engenharia de Software

Processo Unificado (RUP)

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Sistemas de Informação I

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Orientação a Objetos

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

Engenharia de Requisitos Estudo de Caso

Projeto de Sistemas I

LEVANTAMENTO DE REQUISITOS DE FORMA ENXUTA

Concepção e Elaboração

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

rosefib.webnode.com.br

Engenharia Reversa e Reengenharia

Curso: Engenharia de Software com Ênfase em Padrões de Software (UECE Universidade Estadual do Ceará) RUP

Professor: Curso: Disciplina:

Linguagem de Programação I

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Programação de Computadores - I. Profª Beatriz Profº Israel

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

GESTÃO DAS INFORMAÇÕES DAS ORGANIZAÇÕES MÓDULO 11

2 Diagrama de Caso de Uso

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

Análise e Projeto Orientados por Objetos

Engenharia de Software II

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

O Processo Unificado

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

BPMN Business Process Modeling Notation

Análise e Projeto Orientado a Objetos. Modelagem de Domínio

Fase 1: Engenharia de Produto

ARQUITETURA DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

1

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Sumário. Uma visão mais clara da UML

Programa do Módulo 2. Processo Unificado: Visão Geral

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Desenvolvimento estruturado versus orientado a objetos.

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

do grego: arkhé (chefe ou mestre) + tékton (trabalhador ou construtor); tekhne arte ou habilidade;

Resumo artigo Agile Modeling- Overview

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Planejamento - 7. Planejamento do Gerenciamento do Risco Identificação dos riscos. Mauricio Lyra, PMP

Feature-Driven Development

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Processos de Software

Programação Orientada a Objetos. Introdução à Análise Orientada a Objetos (AOO)

Modelagem de Processos. Prof.: Fernando Ascani

TRABALHOS TÉCNICOS Coordenação de Documentação e Informação INOVAÇÃO E GERENCIAMENTO DE PROCESSOS: UMA ANÁLISE BASEADA NA GESTÃO DO CONHECIMENTO

Análise e Projeto Orientados a Objeto

Transcrição:

Orientação a Objetos Vivemos num mundo de objetos. Esses objetos existem na natureza, nas entidades feitas pelo homem, nos negócios e nos produtos que usamos. Eles podem ser categorizados, descritos, organizados, combinados, manipulados e criados. Conseqüentemente, não é surpresa que um enfoque orientado a objetos fosse proposto para a criação de software, ou seja uma abstração que nos permite modelar o mundo em modos que nos ajudam a melhor entendê-lo e a navegar nele. A grande maioria dos métodos empregados como modelo para o desenvolvimento de software, em geral, é baseada em duas abordagens: na decomposição funcional e na modelagem de dados. Verifica-se que tais métodos estão constituídos segundo um paradigma estruturado, onde se têm visões dissociadas em que se distingue claramente os processos de dados. Os processos possuem uma modelagem própria e os dados idem. Em algum ponto, nos métodos tradicionais empregados como análise estruturada e análise essencial, as abordagens de processos e dados se cruzam, uma vez que na realidade os processos acessam os dados, de alguma forma, o método deve retratar com fidelidade o que ocorre no ambiente real. Tanto nos métodos da análise estruturada quanto na análise essencial, o Diagrama de Fluxo de Dados é empregado na representação da funcionalidade; porém, como elemento necessário que dá subsídios às funções, também aparecem os dados nos depósitos de dados; posteriormente, ou paralelamente, desenvolve-se uma modelagem de dados, em geral, empregando-se o Diagrama de Entidade de Relacionamento. No paradigma orientado a objetos, os dados e as funções são vistos de forma agregada, não ocorrendo uma modelagem separada para cada um desses componentes; portanto, sob esse ponto de vista, a orientação a objetos favorece uma modelagem mais natural, que melhor retrata a realidade, pois processos e dados estão coligados, não se encontram dissociados em nenhuma atividade real. A orientação a objetos fundamenta-se em princípios que não são novos. Especialmente como modelo para o desenvolvimento de software, a orientação a objetos possui uma propriedade sinergética, na qual seus componentes podem ser arranjados para melhor espelhar a solução sistêmica dada a um problema do usuário; o qual deve previamente ser entendido na fase de levantamento dos requisitos. O paradigma da orientação a objetos surgiu primeiramente com a programação de computadores no final dos anos 60, com a linguagem SIMULA. Nos anos 70, era parte importante da linguagem SMALLTALK, desenvolvida pela Xerox. Esse paradigma só estreou na análise de sistemas no final da década de 80. No início dos anos 90, o paradigma da orientação a objetos passou a ocupar lugar de destaque no desenvolvimento de software. Três aspectos foram relevantes para a ascensão da orientação a objetos, contrapondo-se aos métodos estruturados: a unificação de conceitos entre as fases de análise e programação, o grande potencial de reutilização do software e a facilidade de manutenção. A orientação a objetos também se apresentou com a esperança de suprir algumas das preocupações da indústria do software: a necessidade de criar softwares corporativos muito mais rapidamente, mais confiáveis e a um custo baixo. Os meios para conseguir essa proeza encontram-se nas características apresentadas pelo paradigma da orientação a objetos, o que leva a um salto quantitativo e qualitativo na produção do software.

A característica básica dos métodos orientados a objetos, que se apresenta como uma grande vantagem quanto a sua utilização, é a façanha de terem unificado os formalismos utilizados na análise, projeto e programação. Os conceitos envolvidos são os mesmos, independentemente da fase no desenvolvimento do software, o que, teoricamente, vem facilitar a forma de comunicação entre o pessoal técnico envolvido no projeto. A orientação ao objeto se dedica a desenvolver um modelo orientado a objetos do domínio da aplicação. Os objetos identificados refletem entidades e operações que estão associadas com o problema a ser resolvido. O enfoque da orientação a objetos, é uma visão sobre um mundo como uma coletânea de objetos que interagem entre si, apresentando características próprias que são representadas pelos seus atributos e operações. O QUE É UM OBJETO? Quando nos damos conta das coisas que nos cercam, intuitivamente constatamos a presença de vários objetos. É também muito natural classificar esses objetos a partir de vários pontos de vista: forma, utilidade, etc. Percebe-se que cada objeto tem características segundo sua estrutura e funcionalidade. Ao examinar mais cuidadosamente determinado ambiente, verifica-se que existem objetos que são semelhantes. Um objeto é uma entidade que possui um estado e um conjunto definido de operações que operam nesse estado. O estado é representado por um conjunto de atributos de objeto. As operações associadas com o objeto fornecem serviços para outros objetos, que requisitam esses serviços quando uma computação é necessária. Os objetos são criados de acordo com uma definição de classe de objetos, que serve com um modelo para criar objetos. Essa classe apresenta declarações de todos os atributos e operações que devem ser associados a um objeto dessa classe. A notação utilizada para as classes de objetos é definida na UML. Objeto é uma unidade de software que consiste em atributos, e de métodos. Algumas propriedades dos objetos: Estado: Diz respeito à situação em que pode estar um determinado objeto. O estado depende da natureza do objeto; Comportamento: Qualquer objeto apresenta um comportamento. O comportamento é o meio pelo qual o objeto passa de um estado para o outro. Normalmente, isso dá mediante uma condição/ação a qual será sempre um método a ser executado; Identificação: Todo o objeto é identificável, portanto, são distinguíveis entre si. CLASSE DE OBJETOS Uma classe representa um conjunto de objetos da mesma característica. Cada um deles é uma instância da classe, dado a sua existência são diferenciados por sua identidade. Uma instância herda as características da classe a que pertence. No conceito de orientação a objeto, classe é um conceito que encapsula as abstrações de dados e procedimental necessárias para descrever o conteúdo e comportamento de alguma entidade do mundo real.

Classe é uma coleção de objetos que podem ser descritos com os mesmos atributos e as mesmas operações. ENCAPSULAMENTO Encapsulamento é o conceito que faz referência à ocultação ou empacotamento dos dados e procedimentos dentro do objeto. Não há dados ou procedimentos fora de um objeto. Cada objeto poderá conter atributos, e procedimentos que guardará dentro de si. O encapsulamento de operações e atributos, atribui vida própria ao objeto. ACOPLAMENTO DINÂMICO, HERANÇA E POLIMORFISMO Ao receber uma mensagem, o objeto verificará se existe um serviço, também chamado de método, que defina seu comportamento perante essa mensagem. A mensagem sempre aciona um método correspondente no objeto que recebeu a mensagem. Pode ser que não exista no objeto acionado, um método de acordo com a inovação feita pela mensagem. Caso o objeto não encontre um método dentro de seu encapsulamento, verificará em seus ramos de herança aquelas superclasses que tenham o método invocado. Esse mecanismo de busca de serviços é chamado de acoplamento dinâmico. Mensagens iguais, destinadas a objetos diferentes, podem gerar comportamentos diferentes. Para uma mesma mensagem, objetos diferentes podem responder ou agir de forma diferenciada; a isso chamamos polimorfismo. BENEFÍCIOS DO PARADIGMA DA ORIENTAÇÃO A OBJETOS Espera-se uma ampla gama de benefícios com os quais a aplicação da orientação a objetos possa vir a trazer no desenvolvimento do software. A expectativa é que venha a superar todos os benefícios atingidos pelos métodos convencionais de construção de software ainda utilizados. Modelagem mais natural: A aplicação dos conceitos da orientação a objetos na análise de sistemas permitirá modelar a empresa ou as áreas da aplicação de uma forma mais natural, visto que os recursos a serem aplicados retratam com mais facilidade o mundo real. A capacidade de retratar o universo pesquisado é moldado em diagramas que refletem exatamente o arranjo dos objetos no mundo real. A própria transição entre etapas na construção do software, aplicando-se o paradigma orientado a objetos, são refinações sucessivas com os mesmos conceitos e linguagem. Reutilização: Diante da forma como são projetados os recursos do software, é possível atingir a maximização na reutilização. Várias classes projetadas constituirão bibliotecas, que poderão ser acionadas por outros projetos diferentes daqueles que a originaram. Projetos mais rápidos com qualidade: Em função da característica da reutilização, uma vez que existam bibliotecas que ofereçam classes com recursos necessários, novos projetos utilizarão esses componentes pré-existentes. Em conseqüência, se espera que novas construções devam demorar menos tempo do que se feitas de outra forma. O fato das bibliotecas serem utilizadas por diversos projetos, implica que os recursos lá existentes estarão testados e com sua funcionalidade aprovada; portanto, além da

velocidade na construção de novos projetos, acabam colaborando para a inexistência de erros, aumentando o grau de qualidade do software. Codificação mais simples de programas: Também dado à estrutura de como se apresenta o paradigma da orientação a objetos, a codificação de métodos reduz a complexidade na construção do código dos programas. Isso traz simplicidade no momento de codificar, testar e manter o software. É importante destacar que os benefícios da tecnologia orientada a objetos são ampliadas se ela é adotada no início e ao longo de todo o processo de engenharia de software. UML Unified Modeling Language A UML é uma linguagem de modelagem para documentar e visualizar os artefatos que especificamos e construímos na análise e desenho de um sistema. A UML é uma linguagem de modelagem, totalmente orientada a objetos, que une as melhores práticas e metodologias da Engenharia de Software. É considerada a sintaxe geral para criar um modelo lógico de um sistema. Ela é utilizada para descrever pontos de um sistema e da forma como ele é percebido de várias visões durante a análise e sua arquitetura. É uma linguagem que visa capturar conhecimento e expressar esse conhecimento. Seu propósito é a modelagem de sistemas, documentar de maneira interativa e visual, proporcionar melhor compreensão e sinergia entre o analista e o cliente envolvido no processo de desenvolvimento. Modelagem Visual A modelagem visual é o uso de notações de design gráficas e textuais, semanticamente ricas, para capturar design de software. Uma notação, como a UML, permite que o nível de abstração seja aumentado, enquanto mantém sintaxe e semântica rígida. Dessa maneira, a comunicação na equipe de design melhora, à medida que o design é formado e revisado, permitindo ao leitor raciocinar sobre ele e fornecendo uma base não ambígua para a implementação. Por que Modelamos? Um modelo é uma visão simplificada de um sistema. Ele mostra os elementos essenciais do sistema de uma perspectiva específica e oculta os detalhes não essenciais. Os modelos podem ajudar das seguintes maneiras: Ajudando na compreensão de sistemas complexos; Explorando e comparando alternativas de design a um baixo custo; Formando uma base para implementação; Capturando requisitos com precisão; Comunicando decisões sem ambigüidade. Ajuda na compreensão de sistemas complexos A importância dos modelos aumenta à medida que os sistemas se tornam mais complexos. Um aplicativo pequeno, criado por uma única pessoa em alguns dias, pode ser facilmente compreendido em sua totalidade. No entanto, um sistema de comércio eletrônico com dezenas de milhares de linhas de código-fonte, ou um sistema de controle de tráfego aéreo de centenas de milhares de linhas de código, não pode mais ser facilmente entendido por uma única pessoa. A construção de modelos permite a um desenvolvedor se concentrar na visão geral, entender como os componentes interagem e identificar falhas fatais. Alguns exemplos de modelos são:

Casos de Uso para especificar comportamento de forma não ambígua; Diagramas de Classes e Diagramas de Modelo de Dados para capturar design; Diagramas de Transição de Estado para modelar comportamento dinâmico. A modelagem é importante, pois ajuda a equipe a visualizar, construir e documentar a estrutura e o comportamento do sistema, sem se perder na complexidade. Exploração e comparação de alternativas de design a um baixo custo Modelos simples podem ser criados e modificados a um baixo custo para explorar alternativas de design. Idéias inovadoras podem ser capturadas e revisadas por outros desenvolvedores, antes de investir em um desenvolvimento de código caro. Quando associada ao desenvolvimento iterativo, a modelagem visual ajuda os desenvolvedores a avaliar mudanças de design e a comunicar essas mudanças a toda a equipe de desenvolvimento. Formação de uma base para implementação Atualmente, muitos projetos empregam linguagens de programação orientadas a objetos para obter sistemas reutilizáveis, tolerantes a mudanças e estáveis. Para obter essas vantagens, é ainda mais importante usar tecnologia de objetos em design. O Rational Unified Process (RUP) produz um modelo de design orientado a objetos que é a base para a implementação. Com o suporte das ferramentas adequadas, um modelo de design pode ser usado para gerar um conjunto inicial de código para implementação. Isso é referido como "engenharia direta" ou "geração de código". Os modelos de design também podem ser aprimorados para incluir informações suficientes para criar o sistema. A engenharia reversa também pode ser aplicada para gerar modelos de design a partir de implementações existentes. Isso pode ser usado para avaliar implementações existentes. "A engenharia round-trip" combina as técnicas de engenharia direta e reversa para garantir código e design consistentes. Combinada com um processo iterativo e com as ferramentas certas, a engenharia round-trip permite que o código e o design sejam sincronizados durante cada iteração. Captura de requisitos com precisão Antes de criar um sistema, é essencial capturar os requisitos. A especificação dos requisitos usando um modelo preciso e não ambíguo ajuda a garantir que todos os envolvidos possam entender e concordar com os requisitos. Um modelo que separa o comportamento externo do sistema da implementação o ajuda a se concentrar no uso pretendido do sistema, sem ficar perdido nos detalhes de implementação. Comunicação de decisões sem ambigüidade O RUP (Rational Unified Process) usa a UML, que é uma notação consistente que pode ser aplicada tanto para a engenharia de sistemas quanto a engenharia de negócios. Uma notação padrão serve aos seguintes papéis: "Serve como uma linguagem para comunicar decisões que não são óbvias ou que não podem ser deduzidas do próprio código." "Fornece semântica rica o suficiente para capturar todas as decisões estratégicas e táticas importantes." "Oferece uma forma concreta o suficiente para que as pessoas raciocinem e para que as ferramentas sejam manipuladas."

UML representa a convergência da melhor prática em modelagem de software por toda a indústria de tecnologia de objetos. RUP O RUP (Rational Unified Process) é um framework genérico para processos de desenvolvimento de software, criado pela empresa Rational Software Corporation, que está fortemente centrado na arquitetura, funcionalidade (caso de uso) e o desenvolvimento iterativo e incremental (inspirado no ciclo de vida espiral de Boehm), que aplica a UML, para o projeto e a documentação. O RUP é um processo de desenvolvimento de software e, como tal, descreve os papéis e as atividades que cada membro da equipe de projeto deve desempenhar ao longo do ciclo de desenvolvimento do software e os produtos que devem ser gerados como resultado destas atividades, os chamados artefatos.