Objeto, propriedade, método, classe

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto, propriedade, método, classe

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto, propriedade, método, classe

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto, propriedade, método, classe

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Objeto, propriedade, método, classe

Mensagem por fladimir »

Grato Quintas pela explicação.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
geti
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 17 Jul 2014 15:03
Localização: uruaçu/go

Objeto, propriedade, método, classe

Mensagem por geti »

Mr. Quintas, muito bom. Parabéns. Você deveria se chamar: descomplica. :{ :D
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto, propriedade, método, classe

Mensagem por JoséQuintas »

Tava inspirado.
Só agora enxerguei isso tudo, que dá pra comparar o objeto "virtual" do computador com um objeto real.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder