Professional Documents
Culture Documents
1 Introdução
Atualmente, as empresas enfrentam um ambiente altamente competitivo e,
por esse motivo, a cada dia surgem novos desafios: por exemplo, melhorar o ciclo de
vendas, aumentar a produtividade, buscar cada vez mais a satisfação do cliente, e
muitos outros.
Para que os desafios possam ser enfrentados, são necessárias ferramentas
que proporcionem, com grande segurança, funcionalidades que facilitem a tomada
de decisão e que transformem os dados em informações.
Apenas para lembrar, os dados são fatos em sua forma primária e, por isso,
precisam ser organizados e arranjados de uma maneira mais significativa.
Um conjunto de dados organizados de tal maneira que adquirem valor
adicional além do valor do dado em si, transforma-se em informação. Assim, para
que o administrador possa tomar decisões com segurança, é necessário que as
informações que ele recebe sejam:
Por isso, a demanda por novos softwares cresce de forma assustadora e, como
consequência, os profissionais que desenvolvem tais sistemas precisam produzir
cada vez mais e em menos tempo porém, não deixando de lado a qualidade e
confiabilidade das informações que serão geradas.
Esses softwares tornaram-se alvos de um novo paradigma de
desenvolvimento: a Programação Orientada a Objetos. Os softwares criados com
essa tecnologia possuem uma modularização em nível de componentes e não em
nível de subsistemas, trazendo como grande vantagem (entre outras) a reutilização
de componentes que fornecem soluções comuns, proporcionando um ajuste mais
adequado na implementação.
A pesquisa sobre metodologias orientadas a objetos, para desenvolvimento de
sistemas de processamento de dados, trouxe como resultado a criação de uma
linguagem de modelagem de software denominada UML (Unified Modeling Language
ou Linguagem de Modelagem Unificada).
A UML é uma linguagem de modelagem padrão que utiliza-se de símbolos e
notações, que são os blocos de construção, para o desenvolvimento de modelos
orientados a objetos.
O que se pretende fazer ou conseguir com a UML é uma padronização na
documentação, na visualização de toda a estrutura do software, na especificação
dos requisitos e na construção de softwares orientados a objetos.
2.1 Abstração
Polígono regular: que tem todos os lados e todos os ângulos iguais; polígono simultaneamente
equilátero e equiângulo.
Polígono equilátero: que tem todos os lados iguais.
Polígono equiângulo: que tem todos os ângulos iguais.
2.2 Classe
2.2.2 Atributos
2.2.3 Propriedades
2.2.4 Métodos
2.3 Objeto
2.3.1 Eventos
2.4 Herança
Quando uma classe herda de mais de uma superclasse, ocorre uma herança
múltipla (uma subclasse possui mais de uma superclasse). Esta técnica é possível
em C++ mas não é possível em Java e C#, no entanto estas linguagens permitem
múltipla tipagem através do uso de interfaces (permitem que uma classe
implemente várias interfaces).
A herança múltipla é o principio, implementado em algumas linguagens de
programação orientadas a objetos, que possibilita o compartilhamento de atributos
e operações de duas ou mais classes em uma subclasse.
O uso indiscriminado desta característica pode levar a uma codificação
confusa que dificulta a manutenção do código.
2.5 Polimorfismo
Por exemplo, a classe abstrata Poligono serve apenas como superclasse, isto
é, não existem instâncias desta classe e o método CalcularArea() é declarado mas o
seu comportamento (código) não é definido. As classes concretas Quadrado,
Triangulo e Circulo possuem todas as definições dos seus métodos CalcularArea(),
portanto destas classes podem ser instanciados objetos.
Podemos imaginar diversas operações que se encaixam na sua interface, como
cálculo da área do quadrado (Lado x Lado), cálculo da área do triângulo (Base x
Altura / 2), cálculo da área do círculo (Pi x Raio2), entre outros. Embora a natureza
do cálculo mude, a semântica do método CalcularArea() não muda, ou seja, ele
sempre calcula a área da figura geométrica plana que está sendo trabalhada; o seu
comportamento varia de acordo com a classe ao qual ele está representando.
Divisão da Complexidade
Framework é uma estrutura de suporte definida em que um outro projeto de software pode ser
organizado e desenvolvido; pode incluir programas de suporte, bibliotecas de código,
linguagens de script e outros softwares para ajudar a desenvolver e juntar diferentes
componentes de um projeto de software. Especificamente em orientação a objeto,
framework é um conjunto de classes com objetivo de reutilização de um design,
provendo um guia para uma solução de arquitetura em um domínio específico de
software. Os frameworks são projetados com a intenção de facilitar o desenvolvimento
de software, habilitando designers e programadores a gastarem mais tempo
determinando as exigências do software do que com detalhes tediosos de baixo nível do
sistema. Framework se diferencia de uma simples biblioteca (toolkit), pois esta se
concentra apenas em oferecer implementação de funcionalidades, sem definir a
reutilização de uma solução de arquitetura (design).
Swing é uma API Java para interfaces gráficas. A API Swing procura desenhar por conta
própria todos os componentes, ao invés de delegar essa tarefa ao sistema operacional,
como a maioria das outras APIs de interface gráfica trabalham. Por ser uma API de mais
alto nível, ou seja, mais abstração, menor aproximação das APIs do sistema opercional,
ela tem bem menos performance que outras APIs gráficas e consome mais memória RAM
em geral. Porém, ela é bem mais completa, e os programas que usam Swing têm uma
aparência muito parecida, independente do Sistema Operacional utilizado.
API – Application Programming Interface ou Interface de Programação de Aplicativos –
é um conjunto de rotinas e padrões estabelecidos por um software para utilização de
suas funcionalidades por programas aplicativos, isto é, programas que não querem
envolver-se em detalhes da implementação do software, mas apenas usar seus
serviços. De modo geral, a API é composta por uma série de funções acessíveis somente
por programação, e que permitem utilizar características do software menos evidentes
ao usuário tradicional. Por exemplo, um sistema operacional (como o Linux) possui uma
grande quantidade de funções na API, que permitem ao programador criar janelas,
acessar arquivos, criptografar dados, etc. Ou então programas de desenho geométrico
que possuem uma API específica para criar automaticamente entidades de acordo com
padrões definidos pelo usuário. No caso de sistemas operacionais, a API costuma ser
dissociada de tarefas mais essenciais, como manipulação de blocos de memória e
acesso a dispositivos. Estas tarefas são atributos do Kernel ou núcleo do sistema, e
raramente são programáveis. Mais recentemente o uso de APIs tem se generalizado nos
chamados plugins, acessórios que complementam a funcionalidade de um programa. Os
autores do programa principal fornecem uma API específica para que outros autores
criem plugins, extendendo as funcionalidades do programa para os usuários comuns.
Aplicações Flexíveis
Padrões de Projeto
2.6 Generalização
2.7 Associação
2.8 Encapsulamento
Bibliografia
BEZERRA, E. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: Elsevier,
2007.
APS_UML_ConteudoAula_01.doc Prof. Luiz Afonso Peccini
12/12
Tópico: Introdução, Introdução à Subtópico(s): Abstração, Classe, Objeto, Herança,
Orientação a Objetos Polimorfismo, Generalização, Associação e
Encapsulamento
BOOCH, G; RUMBAUGH, J.; JACOBSON, I. UML: guia do usuário. Rio de Janeiro: Elsevier,
2005.
FIORINI, S. T.; von STAA, A.; BAPTISTA, R. M. Engenharia de software com CMM. Rio de
Janeiro: Brasport, 1998.
FURLAN, J. D. Modelagem de objetos através da UML – the Unified Modeling Language. São
Paulo: Makron Books, 1998.
LAUDON, K. C.; LAUDON, J. P. Sistemas de informação com Internet. Rio de Janeiro: LTC,
1999.