Clipper On Line • Ver Tópico - Objeto, propriedade, método, classe

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

 

Objeto, propriedade, método, classe

Mensagempor JoséQuintas » 09 Dez 2018 17:52

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:

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:

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Objeto, propriedade, método, classe

Mensagempor JoséQuintas » 09 Dez 2018 18:12

Vamos comparar:

variável

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

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


array:

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Objeto, propriedade, método, classe

Mensagempor JoséQuintas » 09 Dez 2018 22:30

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Objeto, propriedade, método, classe

Mensagempor fladimir » 10 Dez 2018 20:25

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.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Objeto, propriedade, método, classe

Mensagempor geti » 11 Dez 2018 09:51

Mr. Quintas, muito bom. Parabéns. Você deveria se chamar: descomplica. :{ :D
geti
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 5
Data de registro: 17 Jul 2014 15:03
Cidade/Estado: uruaçu/go
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Objeto, propriedade, método, classe

Mensagempor JoséQuintas » 11 Dez 2018 10:20

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 19 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro