Objetivos e princípios da OO

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Orientação a objetos identidade abstração classificação encapsulamento
Análise e Projeto de Sistemas I
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Diagrama de Fluxo de Dados – DFD
Engenharia de Software
COMPLEXIDADE SISTÊMICA
Análise e Projeto de Sistemas
Análise Orientada a Objetos
Metodologias Orientadas a Agentes
Administração de Sistemas de Informação II
Introdução ao paradigma de programação: Orientado a Objetos
Noções Básicas de Modelagem
Sistemas Operacionais
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Tecnologia da Informação Orientação a Aspectos
Engenharia Reversa e Reengenharia Software
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Princípios e Conceitos de Software(v2)
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Copyright Marcos L. Chaim 2005 Princípios de Projeto de Software Orientado a Objetos Segundo Semestre 2005 Marcos L. Chaim ACH Turma 02 EACH – USP.
Seminário de Engenharia de Usabilidade
Separation of Concerns (SoC)
Princípios de Orientação à Objetos
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
Arquitetura Cliente /Servidor
Análise e Projeto de Sistemas
Tipos Abstratos de Dados
Projeto de Banco de Dados
SISTEMA TEORIA DE SISTEMAS ABORDAGEM SISTÊMICA.
Orientação a Objetos Parte I
Programação Orientada à Objetos
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
SISTEMAS DISTRIBUIDOS Aula 4
SISTEMAS OPERACIONAIS I
Documentação de Software
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Banco de Dados Aplicado ao Desenvolvimento de Software
Sistemas operacionais
Engenharia de Software
METODOLOGIA, MÉTODOS E FERRAMENTAS
Laboratório de Programação
Subsistema de Entrada e Saída do Kernel
Desenvolvimento de Software Dirigido a Modelos
Introdução a Programação Orientada a Objetos
Conceitos de Orientação a Objetos Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000.
OSM Organização, Sistemas e Métodos
Introdução a Orientação a Objetos
Banco de Dados Universidade do Estado de Santa Catarina
Introdução à modelagem orientada a objetos
Gestão do Conhecimento e da Informação
 São métodos formais de tornar disponíveis para a administração, quando oportuno, as informações necessárias para facilitar o processo de tomada de decisão.
TECNOLOGIA EM REDES DE COMPUTADORES INTRODUÇÃO A COMPUTAÇÃO Aula /02/2013 Professor Leomir J. Borba- –
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Semana /08/2012 Professor Leomir J. Borba-
Engenharia de Software
Módulo II Capítulo 1: Orientação a Objetos
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
Influencias sobre o Projeto da Linguagem
UNIEURO CENTRO UNIVERSITÁRIO Disciplina PROJETO INTEGRADOR II Professora Responsável SELMA MORAES GESTÃO DE PROJETOS.
CIn-UFPE1 Análise e Projeto de Sistemas Introdução ao Projeto de Software.
CMMI Capability Maturity Model Integration
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Objetivos e princípios da OO Objetivos da OO Robustez Adaptabilidade reusabilidade Princípios da OO Abstração Encapsulamento Modularidade

Objetivos da OO O objetivo principal é lidar com a complexidade de se construir softwares modernos Esse objetivo está relacionado à produção de softwares de qualidade Implementações de software devem buscar robustez, adaptabilidade e reusabilidade

Robustez Todo programador quer produzir software que seja correto Produz as sáidas certas para todas as entradas previstas pela aplicação Software robusto é aquele capaz de lidar com entradas inesperadas que não estão explicitamente definidas em sua aplicação

Robustez Em situações críticas, um erro de software pode causar ferimentos ou perda de vida Um software que não é robusto pode ser mortal Na década de 80, uma máquina (Therac-25) de terapia com radiação aplicou superdoses em seis pacientes Erro na entrada de dados

Robustez O objetivo da robustez vai além da necessidade de tratar entradas imprevistas O software deve produzir soluções corretas apesar das conhecidas limitações dos computadores Problemas da limitação de armazenamento em estruturas de dados Estouro de um array Problemas de overflow e underflow

Robustez Um software deve buscar a correção para todo intervalo de entradas possíveis Robustez e correção não se obtêm de forma automática, necessita ser projetada desde o início

Adaptabilidade Os projetos modernos de software são programas grandes que devem durar muitos anos O software deve evoluir ao longo do tempo em resposta a alterações em seu ambiente CPUs mais rápidas Novas funcionalidades Novas tecnologias de redes de computadores

Adaptabilidade Capacidade de evolução (adaptabilidade) é outro objetivo importante a ser atingido em qualidade de software Outro conceito relacionado é a portabilidade Habilidade que um software tem de ser executado, com alterações mínimas, em diferentes plataformas de hardware ou sistemas operacionais

Reusabilidade Software reutilizável é aquele que seu código possa ser usado como componente de diferentes sistemas em várias aplicações Desenvolver um software de qualidade é um empreendimento caro O custo pode ser diluído se partes do software for reutilizado em aplicações futuras Essa reutilização deve ser aplicada com cuidado

Princípios da OO Os principais princípios da abordagem orientada a objetos que visam a facilitar os objetivos anteriormente descritos são os seguintes: Abstração Encapsulamento Modularidade

Abstração Abstração é um modo de pensamento em que nos concentramos em idéias gerais em vez de manifestações específicas dessas idéias É a disciplina em que nos concentramos em aspectos essenciais do problema e ignoramos todos os outros aspectos não essenciais. Em análise de sistemas

Abstração Problema Abstração Modelo O modelo define uma vista abstrata do problema

Abstração - exemplos Sistema de controle de tráfego aéreo: Detalhes importantes: tipo de aeronave, sinal de chamada, período de manutenção da aeronave Detalhes irrelevantes: cor da aeronave, nomes dos tripulantes, nomes dos passageiros

Abstração - exemplos Sistema de administração de empregados: Detalhes importantes: Nome, data de nascimento, CPF Detalhes irrelevantes: Altura, cor dos cabelos, Peso, hobbies

Abstração - exemplos Um exemplo da física: Corpos em queda livre Dois corpos (bola de aço e uma pena) lançados de uma mesma altura, qual atinge primeiramente o solo? No vácuo Considerando a resistência do ar

Abstração - exemplos Em programação Abstração considera a distinção em que uma unidade de programa faz e como essa unidade de programa funciona Isso permite a separação entre os programadores que usam a unidade de programa e os programadores que implementaram essa unidade de programa

Abstração procedural Abstrações procedurais são as mais simples unidades de programas Procedimentos Funções #include <math.h> float sqrt(float x) – função para calcular raiz quadrada de um número

Abstração de dados Uma abstração descreve as características essenciais de uma entidade que a distingüe de todos os outros tipos de entidades. Tipo Abstrato de Dados (TAD) proporciona uma abstração sobre uma estrutura de dados em termos de uma interface bem definida.

Abstração de dados Vantagens de TADs são: Código e estrutura de dados estarem armazenados num mesmo lugar, cria um programa bem estruturado, legível e facilmente modificável. A noção de tipos abstratos de dados influenciou fortemente o modelo de objetos.

Encapsulamento Ocultamento da informação é uma prática pela qual o projetista se restringe à interface pública de um tipo para propósitos de inspeção ou modificação. Um tipo abstrato de dados é um tipo acrescido com a noção de ocultamento da informação. Ocultamento da informação proporciona um nível de proteção contra acessos inesperados à estrutura de dados.

Encapsulamento TAD Estrutura de dados operações interface

Modularidade Sistemas modernos de software são compostos por vários componentes diferentes que devem interagir corretamente Para se manter essas interações corretas é necessário que os diversos componentes estejam bem organizados Na OO, essa organização se centra no conceito de modularidade

Modularidade Modularidade se refere a uma estrutura de organização na qual os diferentes componentes são divididos em unidades funcionais separadas Uma casa ou apartamento pode ser visto como compostos por várias unidades funcionais: Sistema elétrico Aquecimento ou refrigeração Encanamentos Estruturas

Modularidade A estrutura imposta pela modularidade auxilia a tornar o software reutilizável A modularidade permite que os componentes seja organizados em uma forma hierárquica, com definições abstratas similares em níveis Um uso normal de tais hieraquias ocorre em um gráfico organizacional

Modularidade Prédio Prédio comercial Apartamento Casa

Exercícios Dê um exemplo de um sistema destacando uma abstração feita em seu modelo abstrato Dê um exemplo de um tipo abstrato de dados destacando sua estrutura de dados e sua interface

Bibliografia Tamassia & Goodrich. Estruturas de dados e algoritmso em Java, 2002 Buzato & Rubira. Construção de sistemas orientados a objetos confiáveis. 11 Escola de Computação.Rio de Janeiro, 1998.