Criando uma Classe, Muito perdido, desculpem! [RESOLVIDO]

1. Criando uma Classe, Muito perdido, desculpem! [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 05/06/2020 - 21:35h

Porfavor, entendam que não é falta de leitura! É que não estou conseguindo entender nada mesmo!
As referencias que li sobre classes deveriam ser boas, é tão pouquinha coisa com exemplos, e ainda assim não entendi direito sequer como criar uma classe.

Usei como referencia para entender isso:
Programming Principles and Practice Using C++ 2ªEd (Acreditei mesmo que aqui eu entenderia mas não rolou)
C++ For Beginners Ankit Asthana
Linguagem C++ Silvio do Lago Pereira (Em português e nem assim, entendi)
C / C++ e Orientação a Objetos em Ambiente Multiplataforma Sergio Barbosa Villas-Boas (Em português e nem assim, entendi)
http://www.cplusplus.com/doc/tutorial/classes/

O que preciso pra entender isso? Um pequeno exemplo com a idéia que tenho pra entender!
Vamos lá na prática:

Eu quero criar a Classe Carro. (Escolhi esse nome porque acho mais fácil para entender visualmente, porque não estou conseguindo entender de forma normal!)

Porfavor me corrijam se o que estou dizendo é absurdo! Mas é assim que até o momento entendi o que é Classe!

A Classe Carro terá: (Apenas isso acima, para não complicar muito!)
Cor: Azul ou Branca
Rodas: 2 ou 3 ou 4

Dúvida 1: A Minha Classe Carro acima está completa? Ou falta alguma coisa para ser uma Classe?
Dúvida 2: Cor e Rodas são Membros da minha Classe? Se não, o que eles são?

Em Código:
class Carro {
std::string Cor[2] = {"Azul", "Branca"};
int Rodas[3] = {2, 3, 4};
};

Agora após isso eu fico perdido, porque sei que existe: public, private...
Usando Bibliotecas Gráficas, em public ou private, eu crio ponteiros para o Objeto que eu criei, exemplo Class Janela *NomeMinhaJanela = .....

Nas referencias que eu li não entendi essas declarações. Então na Minha class Carro o que está faltando? Ou eu não preciso disso? Ou na minha class Carro o que eu poderia colocar no meu Carro para que ele tivesse opções para eu colocar em public ou private?

Eu até entendi que usam essa parte para criar uma Função que executará alguma coisa. Mas voltando a minha class Carro, que função eu poderia ter neste caso? Repetindo, quero usar Carro pra entender!

Outro Problema: E agora? Cade o Constuctor da minha Classe?
Eu penso que somente isso me permite criar o Objeto Carro dentro do main assim:
Carro *Fusca = new Carro(Azul, 4); 

Mas parece errado! Porque parece estar faltando alguma declaração na minha Class para que ele entenda os parametros entre parenteses.

Então por favor, se puderem me mostrar essa minha Classe Carro funcionando. Tipo um exemplo. Se bem que nem acho que de para criar um exemplo para ser exibido em uma tela porque não dá para construir o carro e ver ele mesmo!
Mas tipo um exemplo que funcionaria!

Tentando explicar: Acima eu declarei a Classe e o que eu teria no main. Mas sei que não funciona pq acredito que esteja incompleto! É que no exemplo Retangulo, Pilha e alguns outros existentes não estou conseguindo associar nada! Por isso quero usar um Carro como exemplo pra colocar as coisas no Lugar!

O Exemplo que eu consegui criar a partir do Retangulo e de Pilhas foi isso, mas está muito distante do que eu quero ou espero por Classes, nem gostei do exemplo do Retangulo, pois não é o suficiente pra entender classes
#include <iostream>

class Carro {
std::string Cor; // Não sei o que é isso na Minha Classe!
int Rodas;

// Deveria ser assim né? Mas nem sei como aplicar isso!
//std::string Cor[2] = {"Azul", "Branca"};
//int Rodas[3] = {2, 3, 4};

public:
void SetValues(std::string, int); // Não sei o que é isso na Minha Classe! Membro Também?

std::string Create() { // Não sei o que é isso na Minha Classe! Membro Também?
std::string Result = Cor + ", " + std::to_string(Rodas);
return Result;
}
};

void Carro::SetValues(std::string x, int y) { // Não sei o que é isso na Minha Classe! Membro Também?
Cor = x;
Rodas = y;
}

class CarroSport {
std::string Cor; // Não sei o que é isso na Minha Classe!
int Rodas;

// Deveria ser assim né? Mas nem sei como aplicar isso!
//std::string Cor[2] = {"Azul", "Branca"};
//int Rodas[3] = {2, 3, 4};

public:
CarroSport(std::string, int); // Não sei o que é isso na Minha Classe! Entendo apenas como Header/Cabeçalho da minha função abaixo para que eu possa usar no Main

std::string Create() {
std::string Result = Cor + ", " + std::to_string(Rodas);
return Result;
}
};

CarroSport::CarroSport(std::string x, int y) { // Não sei o que é isso na Minha Classe! Isso é um Constructor?
Cor = x;
Rodas = y;
}

int main(void) {
Carro Fusca1;
Fusca1.SetValues("Amarelo", 4);

CarroSport Fusca2("Azul", 2);

std::cout << Fusca1.Create() << "\n" << Fusca2.Create() << "\n";
return 0;
}

As Funções dentro declaradas dentro da minha classe não entendi o que elas são! Meio estranho serem Membros, mas não faço idéia do que elas são exatamente em relação a minha classe, penso que elas não sejam nada, a não ser necessárias.
Seriam Constructors da minha Classe? Talvez?

Esse exemplo que montei acima ele funciona! Meu problema é compreender cada linha dele, associada a Classe!
Mesmo com os exemplos dos Livros diferentes cada um, explicando as classes, o mais facinho que achei foi o do Site, mas mesmo o do Site Retangulos, que foi a base que montei esse exemplo, ainda assim não compreendi direito as explicações.

Minhas dúvidas em relação a essas linhas, não é o que elas fazem ou o porque elas existem!
Minha dúvida é o que elas são para a minha Classe!
Eu não sei onde está o Contructor da Minha Classe, onde ele começa ou termina! Ou sequer se ele existe! Da forma como fiz!

OBS Embora até digam ou falem sobre os Membros, o Contructors, eu não consigo ter uma Certeza se eu entendi, porque obviamente lendo eles explicam, porém, eu entendo como Entendido, qdo eu tenho certeza de alguma coisa. E fico confuso entre uma linha normal, ou uma linha que tenha uma definição/nome!

Mesmo eu sabendo identificar um Constructor na wxWidgets, não consigo ter certeza na Minha 2 Classes acima criadas.
Isso porque Claro, Bibliotecas tem documentação, e lá eles dizem quem é o que claro!

Nas minhas Classes Eu que tenho que saber quem é quem né! Soa bastante estranho eu criar uma Classe e não saber quem eu contratei e qual a profissão de cada um deles kkkkkkkk

Para mim, seria mais fácil se os Livros tivessem colocado ao lado de cada linha uma setinha:
>>>> Isso é um Membro
>>>> Isso é o Constructor
Ainda existe a palavra METODO que nem sei onde encaixaria na minha Classe, pois foi outra coisa que o Paulo Citou em minha pergunta anterior!

Mas eles falam de uma forma Geral, e dessa forma, eu entendi que TUDO é membro, inclusive as funções seriam membros da minha Classe, sejam publicas ou privates ou protegidas....

Nem entendi o porque que minha Classe precisa ter uma Função fora dela! Pois foi baseada no exemplo!
E essa função para mim, é coisa EXTRA, nada tendo a ver com minha Classe em si, embora esteja em uso!


  


2. Re: Criando uma Classe, Muito perdido, desculpem! [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 06/06/2020 - 06:52h

Bom dia Amigos, eu consegui resolver tudo sozinho, fiquei Feliz.
Como informei, fazendo eu consigo aprender, e nesse caso, trabalhei em cima do Grid que estou montando, e foi dessa forma que consegui entender tudo sobre classe, membros, métodos e etc... Pois modifiquei tudo, do jeito que eu queria, e sei modificar agora qualquer coisa!
Claro que ainda é um Longo caminho, mas finalmente aprendi o que é classe e como funciona! Ao menos o Básico que todos tem que saber pra usar!

Estou postando aqui a imagem do Grid que fiz em FLTK Biblioteca que estou AMANDO!
Meu Grid é exemplo apenas, logo ele não tem nada. Ele é a base visual do que vou usar.

Agradecimentos ao Paulo em especial, que respondeu a pergunta anterior, que também ajudou muito pra eu entender Classes!
E mais do que óbvio, ainda mais agradecido porque foram as inúmeras respostas, indicações dadas por ele aqui no Fórum, em C, C++ que estou conseguindo evoluir bastante. E isso é muito legal!

Ouvi repetidas vezes do Paulo... Usa o Debug assim, O Debug é seu amigo... E foram essas repetidas vezes que aprendi a usar e debugar. Isso foi Ótimo!
E vencendo cada etapa, vou melhorando e evoluindo! E são graças as enormes páginas detalhadas que aprendemos mesmo!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts