Página 1 de 1

Objeto, propriedade, método, classe

Enviado: 09 Dez 2018 18:52
por JoséQuintas
Vamos ver se descobrem

Estou com um objeto na mão.
- cilíndrico
- comprido
- ponta vermelha
- solta líquido
- tem mulher que morde

O que é? é uma caneta vermelha.

O que isso tem a ver com programação? Tudo.

Vamos passar isso pra programação....

Vocês começaram a vasculhar a coleção de objetos conhecidos com essas características pra saber qual tinha essas propriedades.
Vamos colocar isso em programação:

Código: Selecionar todos

FOR EACH oObject IN ObjectColetion
   DO CASE
   CASE oObject:Formato != "cilíndrico"
   CASE oObject:Comprimento != "comprido"
   CASE oObject:Ponta != "vermelho"
   CASE ! oObject:SoltaLiquido
   CASE ! oObject:Morde
   OTHERWISE
      ? oObject:Nome
   ENDCASE
NEXT
Objeto/Classe.... pode ser qualquer coisa... mas não existe enquanto se trata de algo abstrato
Tem suas propriedades... que podemos considerar parecido com variáveis
No caso acima, a caneta escreve... isso seria um método/ação do objeto caneta... que podemos considerar uma função
De quebra, o FOR EACH... significa olhar item por item, dentro de uma coleção - coleção pode ser de letras numa string, de elementos num array, etc.

Conclusão:
objeto/classe sempre esteve no nosso dia a dia.
apenas conseguiram traduzir isso pra programação.

não consegue entender sobre classe/objeto?
O ponto é simples, está partindo do que conhece de programação, e não do que conhece do seu dia a dia.
Vamos à caneta:

Código: Selecionar todos

CREATE CLASS CanetaClass
   VAR Nome INIT "Caneta"
   VAR Formato INIT "cilíndrico"
   VAR Comprimento  INIT "comprido"
   VAR Ponta  INIT "vermelho"
   VAR SoltaLiquido  INIT .T.
   VAR Morde  INIT .T.
   METHOD Escrever()
   ENDCLASS
Nesse momento a caneta existe? ainda não

Código: Selecionar todos

oCaneta := CanetaClass():New()
Agora sim.

Complicando um pouco mais... poderíamos ter uma classe pra objeto generico... e criar a classe caneta herdando as características desse objeto.
Ou até várias canetas diferentes herdando a classe da caneta.

Diferente da realidade? não.
Ao falarmos de uma caneta, já temos na cabeça uma definição genérica de caneta.
Apenas vamos verificar o que uma caneta vai ter de diferente: pode ter botão de apertar, pode ter várias cores, etc.
Então... mentalmente já usamos herança de objetos.

É isso.
Não tem porque se complicar com objeto, faz parte do seu dia a dia.
Se não entendeu, é porque está partindo da referência errada.
Se partir de uma variável que pode ter características de local, public, private, static... não vai chegar ao objeto.
Seria o mesmo que partir de um caderno, pra tentar entender a caneta, achar que a caneta é um tipo de caderno.

E talvez por isso, uma pessoa nova em programação pode entender mais fácil:
Ela não vai usar a programação que conhece como referência, porque não conhece nenhuma.
Ela vai usar exatamente os objetos que conhece do dia a dia.

É isso.

Objeto, propriedade, método, classe

Enviado: 09 Dez 2018 19:12
por JoséQuintas
Vamos comparar:

variável

Código: Selecionar todos

CanetaFormato := "cilíndrico"
CanetaComprimento := "comprido"
CanetaPonta := "vermelha"

objeto := "caneta"
? &( objeto + "Formato" )
? &( objeto + "Comprimento" )
? &( objeto + "Vermelha" )
array:

Código: Selecionar todos

#define OBJ_FORMATO 1
#define OBJ_COMPRIMENTO 2
#define OBJ_PONTA 3

oVar[ OBJ_FORMATO ] := "cilíndrico"
oVar[ OBJ_COMPRIMENTO ] := "comprido"
oVar[ OBJ_PONTA ] := "vermelha"

FOR nCont = 1 TO 3
   ? oVar[ nCont ]
NEXT
classe:

Código: Selecionar todos

Caneta:Formato := "cilíndrico"
Caneta:Comprimento := "comprido"
Caneta:Ponta := "vermelha"
? Caneta:Formato
? Caneta:Comprimento
? Caneta:Ponta
Acho que dá até pra considerar uma evolução natural da programação.
Em programação, facilitou identificar no fonte do que se trata, não importa se internamente isso é variável, array, ou outra coisa.

Aí.. na programação....

Temos um aplicativo, que tem uma coleção de telas.
Cada tela é uma coleção de elementos que podem ser texto, desenho, variáveis, funções, etc, ou até sub-telas
E por aí vai.

Tá diferente de antes?
Não.
Você não tinha sua coleção de PRGs para um aplicativo.... cada PRG com variáveis, funções, etc. E telas para cada módulo?
O que mudou?
Agora que a programação fala a sua língua.. .você não entende mais?
Ou será que você é que está se complicando sozinho... rs

Objeto, propriedade, método, classe

Enviado: 09 Dez 2018 23:30
por JoséQuintas
Agora vamos aos objetos GUI.....

Tem propriedade de tamanho, posição, cor de frente, cor de fundo, pode movê-los pela tela, etc.

Esqueça um pouco de programação, e pense em um quadro na parede.
Um quadro na parede é uma coisa, é um negócio, é um troço, é... um objeto
Esse objeto quadro, pode pendurar num prego, pode mover pra outro lugar colocando outro prego, pode ter cor de frente, cor de fundo, ter um desenho (e tem quadro sem desenho?), sei lá mais o que.

Então...

Quadro:CorDeFrente
Quadro:CorDeFundo
Quadro:PosicaoHorizontal
Quadro:PosicaoVertical
Quadro:Desenho
Quadro:Mover()

Uia... novamente objetos, propriedades, métodos, fazendo parte do dia a dia.

Não entende componente GUI.... ué... não entende de um quadro na parede?

A diferença é que um objeto real você pode pegar na mão, já um objeto do computador não.
Se preferir, considere que é um objeto virtual, mas acaba sendo um objeto.

Objeto, propriedade, método, classe

Enviado: 10 Dez 2018 21:25
por fladimir
Grato Quintas pela explicação.

Objeto, propriedade, método, classe

Enviado: 11 Dez 2018 10:51
por geti
Mr. Quintas, muito bom. Parabéns. Você deveria se chamar: descomplica. :{ :D

Objeto, propriedade, método, classe

Enviado: 11 Dez 2018 11:20
por JoséQuintas
Tava inspirado.
Só agora enxerguei isso tudo, que dá pra comparar o objeto "virtual" do computador com um objeto real.