Ivar Jacobson

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa

Ivar Hjalmar Jacobson (Ystad, 2 de setembro de 1939) é um cientista da computação sueco.

Concluiu seu mestrado em engenharia eletrônica no Chalmers Institute of Technology de Gotemburgo em 1962 e um Ph.D. no Royal Institute of Technology de Estocolmo em 1985.

Ícone de esboço Este artigo sobre um(a) cientista da computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.


Polimorfismo

Na programação orientada a objetos, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, um mesmo método pode apresentar várias formas, de acordo com seu contexto. O polimorfismo é importante pois permite que a semântica de uma interface seja efetivamente separada da implementação que a representa. O termo polimorfismo é originário do grego e significa 'muitas formas' (poli = muitas, morphos = formas).

Associação Uma associação é um vínculo que permite que objetos de uma ou mais classes se relacionem. Através destes vínculos é possível que um objeto convoque comportamentos e estados de outros objetos.

Exemplo de associação unária em UML As associações podem ser: • unárias - quando a associação ocorre entre objetos de uma mesma classe. • binárias - quando a associação ocorre entre dois objetos de classes distintas. • múltiplas - quando a associação ocorre entre mais de dois objetos de classes distintas. Cada associação possui características de: • cardinalidade ou multiplicidade - determina quantos objetos no sistema são possíveis em cada vértice da associação. • navegação - se é possível para cada objeto acessar outro objeto da mesma associação. No exemplo de associação unária acima, cada pessoa tem um único pai (cardinalidade 1) e qualquer número de filhos (cardinalidade *). De acordo com a seta de navegação, só é possível navegar para o pai de cada pessoa. Desta forma cada objeto da classe Pessoa consegue acessar seu objeto pai, mas não consegue acessar seus objetos filhos. Agregação Tipo de relacionamento com características todo-parte, onde existe um grau de acoplamento entre o todo e as partes menos intenso, podendo haver certo grau de independência entre eles. Composição Tipo de relacionamento com características todo-parte, onde existe um alto grau de coesão entre o todo e as partes, com total grau de dependência entre eles (todo e as partes). Desta forma, se o todo não existir, as partes também não existirão. Um exemplo de composição é a mão: Uma mão é composta por dedos. Os dedos compõem a mão. Não há lógica em existir um dedo sem mão, porém pode-se ter uma mão sem um ou mais dedos

Classes abtrastas e concretas Uma classe abstrata é desenvolvida para representar entidades e conceitos abstratos. A classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo (template) para uma funcionalidade e fornece uma implementação incompleta - a parte genérica dessa funcionalidade - que é compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas completa a funcionalidade da classe abstrata adicionando um comportamento específico. Uma classe abstrata normalmente possui métodos abstratos. Esses métodos são implementados nas suas classes derivadas concretas com o objetivo de definir o comportamento específico. O método abstrato define apenas a assinatura do método e, portanto, não contém código. Por outro lado, as classes concretas implementam todos os seus métodos e permitem a criação de instâncias. Uma classe concreta não possui métodos abstratos e, geralmente, quando utilizadas neste contexto, são classes derivadas de uma classe abstrata. TITLE COMPONENTE Componentes de Software é o termo utilizado para descrever o elemento de software que encapsula uma série de funcionalidades. Um componente é uma unidade independente, que pode ser utilizado com outros componentes para formar um sistema mais complexo. A OMG define componente como "uma parte modular, possível de ser implantada e substituível de um sistema que encapsula implementação e expõe um conjunto de interfaces". Em programação orientada a objetos um componente é a classe que implementa uma interface e é autônomo em relação a outros componentes do sistema. Um sistema de software pode ser formado inteiramente somente por componentes, pois estes se interligam através de suas interfaces. Este processo de comunicação entre componentes é denominado composição. PS: um objeto não implementa uma interface; um objeto é a instância de uma classe que implementa uma interface

TITLE INTERFACE

Em algumas linguagens de programação, o termo interface (ou protocolo[1][2]) é uma referência à característica que permite a construção de interfaces que isolam do mundo exterior os detalhes de implementação de um componente de software. Um exemplo clássico de utilização de interfaces é o do sistema operacional que, através de uma interface de programação de aplicativos, permite que os programas utilizem os recursos do sistema (memória, CPU e etc) sem que os seus detalhes de implementação sejam conhecidos do programador. Este esquema isola e protege o sistema operacional de eventuais erros cometidos pela aplicação. Os componentes de software utilizam interfaces padronizadas para criar uma camada de abstração que facilite a reutilização e a manutenção do software.[3] Neste cenário, a interface de um módulo de software deve ser mantida em separado da sua implementação e qualquer outro módulo , que interaja com (cliente de ), deve ser forçado a fazê-lo apenas através da interface. Este mecanismo permite que no caso de uma alteração em , o módulo continue funcionando; desde que a utilização do módulo pelo módulo satisfaça as especificações da interface. (Ver também o princípio da substituição de Liskov). Uma interface disponibiliza tipos variados de acesso entre componentes, como por exemplo: constantes, tipos de dado, procedimentos, especificação de exceções e assinaturas de métodos. Em alguns casos é mais apropriado definir as variáveis como parte das interfaces. As interfaces também especificam a funcionalidade disponibilizada através de comentários ou através de declarações lógicas formais (assertions).[4]