![]() |
![]() |
---|
De forma similar e em menor escala o software é um artefato extremamente complexo. São necessários diversos níveis de organização para que qualquer software não trivial possa funcionar adequadamente.
Estas técnicas de organização de software são resultados de 50 anos de evolução da computação.
O modelo de von Neumann, datado dos anos 40, é ainda amplamente utilizado.
Os principais pontos a destacar no modelo são:
Grandes disparidades de custos, prazos e qualidade com relação ao planejamento e implementação de software nos anos 60 e 70 causaram o surgimento a adoção do termo ENGENHARIA DE SOFTWARE.
Um movimento que ganhou impulso no final dos anos 70 foi a programação estruturada. Embora hoje pareça simplista a aplicação dos conceitos de
SEQUÊNCIA, DESVIO e LAÇO, a adoção destes conceitos
representou um grande avanço para a organização da
programação em pequena escala.
Observações a respeito da programação estruturada:
Depois de solucionado o problema do código "espaghetti" se descobriu que o código é a parte de um programa mais sujeito a variações.
Posta a regra geral:
Maior ênfase na modelagem dos dados foi adotada pricipalmente depois da difusão do Modelo Entidade-Relacionamento, de Peter Chen. O MER foi a primeira notação de modelagem semântica de dados de grande sucesso.
A evolução dos conceitos e modelos de programação teve efeito direto na estruturação das linguagens de programação.
Originalmente concebido para construir aplicações de simulação utilizando a linguagem Simula (1967), o modelo de objetos representa o mais destacado avanço de tecnologia de programação e desenvolvimento de software da atualidade. Hoje o modelo não é único e existem efetivamente milhares de pessoas trabalhando no seu uso e aperfeiçoamento. São muitos, e algumas vezes, mal-interpretados, os conceitos e terminologias adotados nas diversas variações do modelo.
Felizmente é possível começar a utilizar o modelo de objetos com um pequeno subconjunto destes elementos. Estes são:
Um OBJETO é um pacote de software contendo dados e procedimentos (código) relacionados. Os procedimentos são chamados MÉTODOS. Os dados dos objetos são chamados VARIÁVEIS ou COMPONENTES DO ESTADO.
Uma representação gráfica simplificada de objetos utiliza "doughnuts" ou simplesmente "donuts".
As variáveis de um objeto são também objetos. A idéia de que o estado de um objeto é composto por outros objetos é bastante utilizada no mundo real e chamada no modelo de objetos de AGREGAÇÃO.
No exemplo acima o objeto avião pode invocar um método de seu sub-componente asa. A invocação de um método qualquer sobre um objeto é chamada de envio de MENSAGEM para o objeto.
Para tratar com várias ocorrências de um mesmo objeto se faz útil a noção de CLASSE de objetos. Classes são modelos que definem os métodos e as variáveis a serem incluídas em um tipo particular de objeto. Os objetos que pertencem a uma classe são chamados de INSTÂNCIAS desta classe e contêm valores particulares para as suas variáveis. As variáveis de um objeto são chamadas de VARIÁVEIS DE INSTÂNCIA em Smalltalk. Abaixo temos esqueletos de código que definem as classes dos objetos aviao, asa, propulsor e lemeDeDirecao da figura anterior.
class Aviao {
class Asa {
class Propulsor {
class LemeDeDirecao {
Herança é um mecanismo através do qual uma classe de objetos pode ser definida como caso especial de uma classe mais geral. Casos especiais de uma classe são chamados de SUBCLASSE. A classe mais geral é chamada de SUPERCLASSE. Estendendo o exemplo do avião temos agora dois tipos mais específicos de avião: AviaoDeGuerra e Ultraleve.
Suponha um Sistema de Controle de Universidade, onde professores, alunos, departamentos, cursos, disciplinas, etc, são organizados segundo o modelo de objetos. Um subconjunto das classes de pessoas que compõem o sistema (Pessoa, Professor, Aluno, AlunoPos, AlunoGraduacao, AlunoIC) ilustrado na figura abaixo. Observe que as classes Professor e AlunoIC declaram implementar a interface Remuneravel.
Parte das outras classes que formam o sistema (Departamento, Curso, Disciplina, SetorPagamento, SetorEventos e Convite) é ilustrada na figura abaixo.