1 Profª. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com ENG10082 Programação II Créditos: Prof. Gustavo Willam Pereira e Prof. Clayton Vieira Fraga Filho
2 Paradigmas de programação Paradigmas de Programação Declarativo Imperativo Funcional Lógico Seqüencial/ Procedural Orientado a Objetos
Visão de desenvolvimento baseada em um modelo entrada-processamento-saída A computação ocorre através da execução de instruções passo a passo. Pode incluir subrotinas ou procedimentos como mecanismo de estruturação. Ex: C, Pascal. 3
4 Dados Dados Dados Processamento Resultado
Custo Total 5 Exemplo: Calcular a folha de pagamento de um departamento Adiantamento do João Salário do Pedro Dependentes da Maria Férias do Antônio Salário da Maria Demissão da Joana Processamento Prêmio da Helena
Exemplo: Domínio do problema gestão acadêmica Considerando o problema da gestão acadêmica, como resolvê-lo? Como implementá-lo? Definindo suas funcionalidades. - Lançar disciplinas. - Associar alunos à disciplinas. - Efetuar matrícula. - Lançar notas. - Consultar média. - Lançar faltas. 6
Mas... Para efetuar matrícula e consultar média pensamos no aluno. Para lançar notas e lançar faltas pensamos no professor. Para lançar disciplinas e associar alunos a disciplinas pensamos no coordenador. Isso acontece porque vivemos em um mundo de objetos! 7
Desvantagens: Dados são considerados separadamente das funções. Funções são ativas e dados são repositórios passivos de informação afetados por funções. semântica do mundo real é desprezada. maior dificuldade na reutilização de código. Não nos ajuda a preparar o código para possíveis modificações no futuro, já que seu objetivo é simplesmente descrever a solução para um problema, e não o problema. 8
Paradigma para o desenvolvimento de software que organiza o software como uma coleção de objetos que interagem entre si. Uma forma de pensar os problemas, utilizando modelos organizados a partir de conceitos do mundo real. Pressupõe que o mundo é composto por objetos. 9
As partes das quais o modelo é construído são os objetos que aparecem no domínio do problema. Objeto é uma entidade que combina e s trutura de da do s e c om po rta m e nto func io na l. Os sistemas são modelados como um número de classes que ao serem instanciadas interagem, trocando informações. 10
Envolve todas as atividades de desenvolvimento: análise, projeto, programação, testes, Os mesmos objetos existem em todas as fases e uma notação única facilita a INTEGRAÇÃO ENTRE FASES de desenvolvimento. 11
12
13 Programação Procedimental Programação Orientada a objetos
Diminui a diferença semântica 14
Reduz complexidade através de melhoria do grau de abstração Melhora produtividade a longo prazo, permitindo o uso da reutilização pelos desenvolvedores Torna mais fácil a comunicação entre clientes e desenvolvedores Maior facilidade de manutenção 15
Modelos que casam com a forma de seus negócios; Gerenciamento simplificado, através da quebra das aplicações em unidades menores e mais bem definidas; Maximiza a reutilização de código; 16
Reduz esforço de codificação; Reduz teste, melhora confiabilidade; Reutilização customizada através de componentes white box (ex: classes C++, Delphi); 17
Menor produção de software novo: aumento de produtividade ganho de qualidade ganho de confiabilidade conhecimento adquirido pode ser compartilhado 18
Linguagem S IMUL A (anos 60), derivada do ALGOL e desenvolvida no Centro Norueguês de Computação, por Kristen Nygaard e Ole-Johan Dahl. A SIMULA era utilizada para simulações e foi a pioneira na utilização de classes e subclasses, semelhantes às usadas atualmente em POO. S MAL L T AL K (anos 70), foi a primeira linguagem autêntica orientada a objetos. Foi desenvolvida por cientistas do Xerox Palo Alto Research Center (Xerox PARC). Cada elemento do SMALLTALK é tratado como sendo um objeto. Esta linguagem é puramente OO. 19
C ++, dos laboratórios da AT&T Bell, criada por Bjarne Stroustrup, uma expansão da linguagem C, muito popular e conhecida. (anos 80) Suporta POO, mantendo as características do C tradicional (Fácil transição do C para o C++) J a va (1995), desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Uso de sintaxe familiar ao C++. Inicialmente com limitações inerentes à interpretação. Atualmente muito popular. Projeto da linguagem que facilita o ensino. 20
O termo P rog ra m a ç ã o Orie nta da a Obje tos foi criada por Alan Kay, autor da linguagem de Programação SMALLTALK. 21
22
23
24 UML Unified Modeling Language (Linguagem de modelagem unificada) Na década de 90, Booch, Rumbaugh e Jacobson uniram as melhores características de cada método e criaram a UML. A UML é uma família de notações gráficas, que ajuda na descrição e no projeto de sistemas de software, particularmente daqueles construídos utilizando o estilo orientado a objetos. Esta notação foi padronizada pela OMG (Object Management Group) em 1997.
25 A tecnologia de objetos facilita o entendimento do domínio do problema, permitindo o GERENCIAMENTO DA COMPLEXIDADE através da modularização. Facilidade de mudanças através do ENCAPSULAMENTO de dados