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

Teoria Geral dos Sistemas Paradigmas conceituados Estrutural x Orientação a objetos. Linguagem Java. 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:

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem se quiser ampliar

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

Exemplos Java,Linguagem Java, Programação, Java

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):

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem se quiser ampliar

Orientação a Objetos:

Exemplos Java,Linguagem Java, Programação, Java
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.

Exemplos Java,Linguagem Java, Programação, Java
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)

Exemplos Java,Linguagem Java, Programação, Java
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

<p>
  <span style="color: rgb(0, 0, 0);font-family:arial;">Nasce o Conceito de Decomposição de Sistemas</span>
</p>

<p>
  <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">4 &#8211; Geração:</span>
</p>

<p>
  <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Estrutural -></span><span style="color: rgb(0, 0, 0);font-family:arial;"> São linguagens de Terceira Geração</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Orientação a Objetos -></span><span style="color: rgb(0, 0, 0);font-family:arial;"> São linguagens de Quarta Geração</span>
</p>

<p>
  <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">5 &#8211; Conforme a distribuição do seu programa:</span>
</p>

<p>
  <span style="color: rgb(0, 0, 0);font-family:arial;">(Em estrutural temos o conceito de que um programa é dividido em duas partes: Dados e funções).</span>
</p>

<p>
  <span style="color: rgb(0, 0, 0);font-family:arial;">Conforme Observado no item 2,</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> em linguagens estruturadas os dados estão em HD e as funções em RAM portanto:</span>
</p>

<p>
  <a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphG6jGR0mI/AAAAAAAAAEE/dH7j-KddL94/s1600-h/paradigmaEstruturado.png"><img style="cursor: pointer; width: 217px; height: 195px;" src="http://localhost/www/wp0/uploads/paradigmaEstruturado.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375124126934618722" border="0" /></a><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem se quiser ampliar</p> 

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

  <p>
    </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SphHALSFIqI/AAAAAAAAAEM/rJPlev6JvvU/s1600-h/paradigmaOrientadoaObjetos.png"><img style="cursor: pointer; width: 320px; height: 248px;" src="http://localhost/www/wp0/uploads/paradigmaOrientadoaObjetos.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375124223620883106" border="0" /></a><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem se quiser ampliar</p> 

    <p>
      </span><span style="color: rgb(0, 0, 0);font-family:arial;"> Essa diferença é explicita agora, </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">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 &#8211; RAM E HD).</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">6-</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Gerenciamento automático de memória:</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Estrutural:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> 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.</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Orientado a objetos:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> 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.</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">7-</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Ponteiros:</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Estrutural:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Temos o conceito de ponteiro a estrutura</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Orientado a objetos: </span><span style="color: rgb(0, 0, 0);font-family:arial;">Temos o conceito de Referência ao objeto</span>
    </p>

    <div style="text-align: center; color: rgb(0, 0, 0);font-family:arial;">
      <span style="font-weight: bold;font-size:180%;">É Fundamental Intender:</span></p>
    </div>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;"> 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.</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Com o paradigma Orientado a Objetos surge o Conceito de componentização</span><span style="color: rgb(0, 0, 0);font-family:arial;">(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.</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;"> Olhando um programa de uma forma abstrata, dividindo ele em 2 partes:</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Dados</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Funções</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">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).</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;"> 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!)</span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;">Paradigma Orientado a Objetos e Abstrações do mundo real:</span></span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;"> Antigamente tinha-se em mente o conceito de &ldquo;Fabricantes de Automóveis&rdquo; 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.</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Importante saber diferenciar:</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Implementar =</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Construir algo</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> Implantar =</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Colocar algo ja construido para FUNCIONAR</span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;">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</span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;"></span></span></span>
    </p>