quinta-feira, 27 de agosto de 2009

Teoria Geral dos Sistemas, Paradigmas conceituados, Estrutural x Orientação a objetos

Conceito Chave sobre a linguagem de programação java:
Advertência: É necessária a leitura do(s) Post(s): Princípios Básicos: Voce Tem que saber!



*Orientada a Objetos:
A linguagem programação java é Orientada a Objetos(Paradigma Orientado a objetos) o principal objetivo da linguagem é a criação de objetos,Pequenos pedaços de código que juntos formam a solução de um problema. Poucos sabem porem O Padradigma Orientado a objetos começou com a linguagem SIMULA-67(Sabe porque se chamala SIMULA? Pois com O.O ela fazia a Simulação da vida REAL), Porem a primeira que realmente entrou no Paradigma foi Smalltalk.

A partir de hoje, você aprenderá não só java, mais a desenhar. Quando dizemos que java é uma linguagem do paradigma Orientado a objetos, estamos dizendo que um CONJUNTO DE OBJETOS FORMAM um programa(Veja isso como um quebra cabeça, onde você pega peça por peça). ISSO é um objeto:


Clique na imagem se quiser ampliar

E isso é um Programa feito no Paradigma Orientado a Objetos:




Clique na imagem se quiser ampliar


Curiosidade:
Orientação a Objetos deriva da BIOLOGIA, de uma forma abstrata tudo é formado por moléculas sistematicamente falando no paradigma Orientação a Objetos tudo é um objeto(componente) o qual a idéia é muito parecida com a de molécula.

- Uma molécula interage com outras através de mensagems
- Quando uma molécula quer afetar outra, dispara um sinal químico que obtem a resposta desejada
- A membrana da cécula receptora filtra as mensagens, atende as que realmente fazem sentido fazendo funções internas.(Isso evita que uma célula precise conhecer oque a outra faz)

Então um conjunto de células forma um corpo físico, um conjunto de Objetos formam um programa.(Da biologia vem conceitos como Herança,Polimorfismo veremos mais sobre isso nas próximas seções.).


Teoria Geral dos Sistemas:
Daqui que surge a idéia de Orientação a Objetos

A Teoria Geral dos Sistemas foi elaborada, em 1937, por Ludwig Von Bertalanffy, para preencher uma lacuna na pesquisa e na teoria da Biologia. Os seus primeiros enunciados são de 1925 e ela é amplamente reconhecida na administração da década de 60.
Da definição de Bertalanffy , segundo a qual o sistema é um conjunto de unidades reciprocamente relacionadas , decorrem dois conceitos : o de propósito ( ou objeto ) e o de globalismo ( ou totalidade ) . Esses dois conceitos retratam duas características básicas em um sistema .

*** O conceito de elementos(Componentes) é o mesmo de OBJETOS EM JAVA

Um sistema é :

- Um conjunto de elementos
- Dinamicamente relacionados
- Formando uma atividade
- Para atingir um objetivo
- Operando sobre dados / energia / matéria
- Para fornecer informação / energia / matéria

O nivel de Abstração de um Sistema é importante:
As moléculas existem dentro das células , as células dentro dos tecidos , os tecidos dentro dos órgãos , os órgãos dentro dos organismos , os organismos dentro de colônias , as colônias dentro de culturas nutrientes , as culturas nutrientes dentro de conjuntos maiores de culturas , e assim por diante .

- Um Sistema pode ser Formado de moléculas(Olhando por um nivel mais baixo de abstração)
- Um Sistema pode ser Formado por células(Subindo um pouco mais o nivel de abstração)
- Um Sistema pode ser Formado por tecidos(Subindo ainda mais um pouco o nivel de abstração)

BIBLIOGRAFIA

Além das já citadas no trabalho: www.sbdg.org.br
Grupo de Formação 90 - SBDG

BERTALANFFY, L.v. - Teoria Geral dos Sistemas, Vozes, Petropólis , 1972
BERTALANFFY, L.v. - Teoria Geral dos Sistemas, Vozes, Petropólis , 1972

Qual a diferença entre Paradigma Orientado a Objetos(java) e o Paradigma estrutural?

A Orientação a Objetos e Estruturada, são paradigmas totalmente diferentes.



1 - Estrutural trata um programa como um Conjunto de instruções, Orientação a Objetos trata um programa como um Conjuntos de Objetos que interagem entre si(Assim como a derivação da Teoria Geral dos Sistemas):



Clique na imagem se quiser ampliar

Orientação a Objetos:


Clique na imagem se quiser ampliar





2 - I/O no dispositivo(Estrutural) X CRUD(Orientação a Objetos):


Conceitos Iniciais: O tempo de resposta do acesso a HD normalmente é de 10 elevado a -3(10 ^ -3), o tempo de resposta do acesso a RAM é de 10 elevado a -9(10 ^ -9).(Ou seja o acesso em Ram é muito mais rápido)

-> Linguagens com paradigma Estrutural trabalham com o conceito de I/O(Input/Output) no dispositivo.


Clique na imagem se quiser ampliar


*A conexão entre dispositivos é feito e permancida, ou seja conecta-se um dispositivo no outro e fica conectado direto.(A leitura dos dados fica conforme a necessida porem a conexão é mantida),(Programa em RAM e dados em disco), fica nesse trabalho de acessar um ao outro.

-> Linguagens com paradigma Orientado a Objetos entra com o conceito de CRUD(Create, Retrieve, Update e Delete)


Clique na imagem se quiser ampliar


* A conexão entre dispositivos só é feita na leitura de dados da HD, o programa todo(Programa e dados) trabalha em memória RAM, onde o tempo de resposta é bem menor.



3 - Decomposição da Visão dos Paradigmas:


Estrutural -> Começa em um nivel de Abstração de MACRO -> MICRO
Essencial -> Começa em um nivel de Abstração Intermediário.
Macro <- Intermediário -> Micro
Orientação a Objetos -> Começa em um nivel de Abstração MICRO, e o Conjunto de MICROS, formam um MACRO

Nasce o Conceito de Decomposição de Sistemas

4 - Geração:

Estrutural -> São linguagens de Terceira Geração
Orientação a Objetos -> São linguagens de Quarta Geração



5 - Conforme a distribuição do seu programa:

(Em estrutural temos o conceito de que um programa é dividido em duas partes: Dados e funções).

Conforme Observado no item 2, em linguagens estruturadas os dados estão em HD e as funções em RAM portanto:


Clique na imagem se quiser ampliar

Conforme Observado no item 2, em linguagens Orientadas a Objeto, o acesso a HD é muito baixo, pois todo programa se encontra em RAM portanto:


Clique na imagem se quiser ampliar


Essa diferença é explicita agora, EM Orientação a Objetos os dados e as funções em si ficam Juntos(RAM), ja em Estrutural os dados ficam em meios diferentes das funções em si(Como se fosse um programa dividido em 2 partes - RAM E HD).


6- Gerenciamento automático de memória:

Estrutural: Em linguagens Estruturais não tenho gerenciamento de memória, ou seja a alocação e desalocação de memória fica a encargo do programador. Em muitos casos acontece oque chamamos de memory link ou seja memória presa ao programa que não tem mais uso a ele e que não foi desalocada pela programador.
Orientado a objetos: Em java temos o Garbage Collector(GC) que é quem faz a desalocação automática de memória deixando a cargo da Arquitetura de java a desalocação de memória e não ao programador.



7- Ponteiros:
Estrutural: Temos o conceito de ponteiro a estrutura
Orientado a objetos: Temos o conceito de Referência ao objeto



É Fundamental Intender:

Paradigmas Diferentes não significa melhor e nem pior, TUDO depende da Implementação do código que você usará. É importante saber intender e principalmente valorizar as diferenças. Nada é Pior e nem melhor, apenas tem sua utilidade diferenciada.
Com o paradigma Orientado a Objetos surge o Conceito de componentização(ir em busca de um componente(objeto), fazer a junçar de componentes(objetos)) e surge um Conceito de que a maioria dos softwares hoje em dia são OBJETOS COMPUTACIONAIS.
Olhando um programa de uma forma abstrata, dividindo ele em 2 partes:
- Dados
- Funções
O paradigma estrutural trabalha com Dados em HD, Funções em RAM(Os dados e as funções são do programa todo). Orientação a objetos trabalha com dados e funções em RAM(Cada Objeto tem seus Dados e suas funções).
No paradigma Orientado a Objetos, Um programa é um conjunto de objetos, e cada Objeto não sabe e nem quer saber do outro. Abstraindo da vida real é como se fosse uma relação entre duas pessoas..Uma dia a outra: Eu nem sei e nem quero saber da sua vida, cada um com seus problemas.(Infelizmente na vida real nem sempre ocorre isso!)


Paradigma Orientado a Objetos e Abstrações do mundo real:

Antigamente tinha-se em mente o conceito de "Fabricantes de Automóveis" pois, a Fábrica fabricava carros. Se você observar hoje em dia temos o CONCEITO MONTADORA DE CARROS(Essas grandes empresas não fabricam carros elas montam, todas as peças(componentes,objetos) ja estão prontos), com o Conjuntos de objetos do carro(motor, roda etc) ja estão prontos, elas simplesmente MONTAM OS OBJETOS NO CARRO, sendo assim uma MONTADORA DE CARROS.


Importante saber diferenciar:
Implementar = Construir algo
Implantar = Colocar algo ja construido para FUNCIONAR


Esse post é só uma introdução entre as diferenças de Paradigmas, conceitos de Orientação de objetos ja introduzindo a linguagem de programação JAVA

CYA DUDES!!!

Um comentário: