Mostrando postagens com marcador UML. Mostrar todas as postagens
Mostrando postagens com marcador UML. Mostrar todas as postagens

segunda-feira, 22 de junho de 2009

UML - O que é isso?

Vou tentar explicar um pouco sobre isso, pois to no final da faculdade e sou um zé ninguém ainda, mas acho que posso dar uma ajuda no que diz respeito a projeto final e idéias de Orientação a Objeto e principalmente UML, no qual tive que fazer 2 matérias na faculdade com o mesmo conteúdo, ou 90% parecido.

O que é UML?

A tradução da sigla podemos dizer que é Linguagem de Modelagem Unificada, ou seja, é um tipo de linguagens que deve se manter padrão e compreensivel em qualquer nível de um empresa ou departamento. De forma mais simples a UML é uma forma de documentar um projeto de forma que qualquer pessoa possa entender e influennciar na realização do projeto.


Como e pra que usar?
Vejamos por exemplo, um empresa irá desenvolver um sistema de computador que realize os cálculos do setor financeiro, porém não pode-se deixar que a equipe de desenvolvimento faça por si própria o que bem achar melhor, é necessário que toda a empresa ou os setores envolvidos estejam dentro do desenvolvimento, sendo assim, a equipe de devenvolvilmento não pode usar termos de informática ou mostrar somente códigos para os superiores, para isso foi criado a UML, que se utiliza de diversos padrões de forma a estar num intermediário entre o código feito (como java, ruby, php,...) e a gestão da empresa.
Por meio da UML, que se encontra atualmente na versão 2.0, criamos diversos diagramas que irão representar cada processo sendo realizado e como é realizado dentro do desenvolvimento de determinado projeto. Muitas empresas preferem não adotar o uso da UML, pois inicialmente, o tempo e trabalho tipo para desenvolver a documentaçao é muito alto, porém quando se realiza um manutenção futuramente, elas não pensando que será MUITO mais rápido.
Não quero dizer se um empresa deve ou não usar UML, o importante é que seja entendido o que ela é como usar, em futuros posts irei falar os diagramas que seriam os mais importantes e como usa-los. Na versão atual da UML (2.0) existem 13 diagramas, a maioria é uma semelhança do outro, mudando, somente alguns detalhes. Os diagramas mais importantes que pelo menos eu tenho usado, são os Diagramas de Caso de Uso, Diagramas de Classes, Diagramas de Sequencia, Diagramas de Atividades e Diagramas de Tempo.
Ao criamos um projeto iremos primeiro analisar o mini-mundo do projeto, da empresa, da condições e avaliar de uma forma que pode ser passada em um texto ou gráficos ou tabelas, indico os texto pois pode ser mais fácil a ediçao, mas os outros são bons.

Depois de feito a analise das condições é criado o Diagrama  de Casos de Uso, após isso o Diagrama de Classe que irá se basear no de Casos de Uso, após criado esses 2 diagramas todos os outros diagramas podem ser criados.

Caso eu não tenha sido claro, postem seus comentários.
Até o próximo post.
Abraços

quinta-feira, 20 de março de 2008

O que significa Orientação a objetos ?

Para quem é Programador nos dias de OO (Orientação à Objetos) é fundamental ter conhecimento sobre tal e para quem está iniciando, assim como eu, que estou vendo em UML. É complicado ter uma lógica boa de OO, e pesquisando na net achei um artigo do José Carlos Macoratti, no próprio, onde tem várias outras coisa muito boas. VOu publicar o artigo dele e todos os créditos são do cara.


Autor: José Carlos Macoratti

Orientação a objeto é um conceito que esta relacionado com a idéia de classificar , organizar e abstrair coisas. Veja a definição formal:


"O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados. "

Vamos falar uma linguagem mas simples para isto vamos para um ambiente que você conhece bem: A sua casa !


Agora vamos olhar a sua estante , o seu guarda-roupa , o seu armário , a sua cozinha. Em todos estes lugares você classificou coisas no seu domínio e , somente de olhar para eles você já sabe relacionar a classificação que utilizou em cada um deles e como classificou as coisas que estão neste lugares. Na estante você agrupou e organizou os livros , no guarda roupa suas camisas, calças , meias , ternos , etc. Todos os objetos que você classificou nestes lugares foram organizados baseado em alguma concepção que você possuía sobre eles.


No contexto orientado a objeto a estante , o armário , a cozinha são chamados de classes.


No contexto de software podemos dizer que :

Uma classe é um gabarito para a definição de objetos. Através da definição de uma classe, descreve-se que propriedades -- ou atributos -- o objeto terá.

Uma classe mantém dois elementos importantes : estrutura e comportamento.

  • Uma estrutura representa os atributos que descrevem a classe.

  • Um comportamento representa os serviços que a classe suporta.

Na classe do seu guarda-roupa , uma camisa amarela pode ser colocada em uma outra classe. A classe camisa.

  • Cada camisa tem uma estrutura que é : a textura , a cor , o tamanho e o modelo.

  • Cada camisa tem um comportamento que é : ordenar , rasgar , desbotar .

Se você concordar que existe uma classe camisa. Vai concordar que existem diversos tipos de camisas com suas características, ou seja , existem diversos objetos camisas que podem ser criados a partir da classe camisa. Daí temos o conceito de objetos:

O conceito de orientação a objetos é abordado desta mesma maneira sempre. No contexto do software podemos então dizer que :

É através de objetos que (praticamente) todo o processamento ocorre em aplicações desenvolvidas com linguagens de programação orientadas a objetos.

  • Primeiro você classifica e abstrai os elementos no sistema para proporcionar uma certa ordem ao fazer isto você define uma classe

  • Feita a definição da classe você pode criar objetos desta classe. (instanciar)

Vou citar aqui o exemplo clássico da planta de uma casa.

- Classe seria um gabarito (como uma planta de uma casa)

- O objeto é concretização do gabarito (casas feitas a partir da mesma planta)

Quando levamos estes conceitos para as linguagens de programação nada se altera.

Existem alguns conceitos básicos que estão vinculados ao conceito de orientação a objetos. São eles :

  • Herança

  • Encapsulamento

  • Polimorfismo

A herança permite implementar a funcionalidade a sua classe de tomar emprestado o resto da estrutura e comportamento de classes de nível mais alto.

Pensemos na classe carro. Esta classe define os comportamentos e atributos de um carro. E existem atributos que serão comum a todos os carros.

As rodas e o motor são atributos comuns a qualquer carro. Já uma Ferrari possui atributos que somente ela possui : valor por exemplo.


A definição formal seria:


Herança é um mecanismo que permite que características comuns a diversas classes sejam agrupadas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Cada classe derivada ou subclasse apresenta as características (estrutura e métodos) da classe base e acrescenta a elas o que for definido de particularidade para ela


Encapsular significa "ocultar informações" ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona e oculta os detalhes internos sobre como ele executa os serviços.


Quando você acelera um carro você esta enviando uma mensagem ao motor do carro usando o acelerador e o carro sabe que tem que acelerar. Você não precisa saber como é feita a aceleração no motor você apenas pisa fundo no acelerador , a implementação de como é feita a aceleração esta encapsulada do cliente.


Polimorfismo significa muitas formas , na orientação a objetos você pode enviar uma mesma mensagem para diferentes objetos e fazê-los responder da maneira correta. Você pode enviar a mensagem de dar marcha-ré para cada objeto semelhante a um carro e cada um vai se comportar de maneira diferente para atender a sua solicitação.


Uma definição mais formal diria:


"Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse"



Fonte: http://www.macoratti.net/oo_conc2.htm