Re: User imput string int and float[DOUBT]

2017-02-16 Thread Jean Cesar via Digitalmars-d-learn

On Thursday, 16 February 2017 at 22:44:58 UTC, Ali Çehreli wrote:

On 02/16/2017 02:05 PM, Jean Cesar wrote:

> So I used get methods and sets only as initial pattern to
netender the
> functioning of the language in relation to some concepts of
the same

Makes sense...

> how to leave a very small code with the largest number of
> Possible functionality type

I think D is very suitable for that.

> I still do not know very well or use
> constructors in C ++

Understandable: Many coding guidelines eschew doing non-trivial 
work in constructors. They require a member function like 
obj.initialize(/* ... */) to be called in order to get a 
functioning object.


> but I have very high potential in a code with
> multiple inheritance

That's going to be a problem because D does not allow multiple 
inheritance.


> I think of compilers in the case of the code that
> favors me in reading so I would do something like:
>
> void main ()
> {
>minhaclasse c = new minhaclasse(string text);
>minhaclasse d = new minhaclasse(int number);
>
>  write("Enter your name: ")
>  c.set();

So, your minhaclasse is basically ValorLegível (ReadableValue), 
which would not scale because likely it's also writable and 
movable, etc. And that explains why you're looking for multiple 
inheritance. :)


// NOT valid D (and no, I don't speak Portuguese)
class MinhaValor : ValorLegível, ValorEscrita, ValorMóvel /*, 
... */ {

// ...
}

> void main ()
> {
>   string txt;
>Int num;
>  write("Enter your name: ")
>  minhaclasse(text).set();
>
>  write("Enter your age: ")
>  minhaclasse(num).set();
>
>   writeln
>(
> "\n\tString:", minhaclasse(text).print() ;,
> "\n\tInt:", minhaclasse(num).print();
>);
> }
>
> I think of object orientation this way to avoid getting
rewritten many
> things so I would only define what the set or get would
return by
> initializing the constructor only but I have no idea how to
do that ..

You make it sound as if OOP is for code reuse or for reducing 
code repetition. I think regular functions provide that already.


Unless polymorphism is really beneficial, functional style is 
preferable. Additionally, D has this very useful universal 
function call syntax (UFCS), which makes your use case easy to 
implement, and which my earlier code could have benefited from 
as well.


import std.stdio;
import std.traits;

auto read(T)(ref T t, string message)
if (!isSomeString!T) {
writef("%s: ", message);
readf(" %s", );
return t;
}

auto read(S)(ref S s, string message)
if (isSomeString!S) {
import std.string : strip;
writef("%s: ", message);
s = readln().strip();
return s;
}

class person
{
private:
string name, address;
int age;
float height;

public:
static person fromConsole()
{
auto p = new person();
/* UFCS in action: Note how these are not written as
 *read(p.name, /* ... */)
 */
p.name.read("Enter Your Name");
p.age.read("Enter Your Age");
p.height.read("Enter Your Height");
return p;
}

float getHeight()
{
return height;
}

int getIty()
{
return age;
}

string getNome()
{
return name;
}

}

void main ()
{
person p = person.fromConsole();

writeln(p.getNome());
writeln(p.getIty());
writeln(p.getHeight());
}

> My goal in learning to use languages like Java, C ++, D is
with the
> intention of learning the best way to reuse code and
orienation to
> objects and also development cross-platform codes that will
run in
> standard ansi for, Unix, Linux, Windows, android etc. ..

Ali


I tried to define a method to read vectors of chars but this is 
giving error


auto read(C)(ref C c, char[] message)
if (!isSomeChar!C) {
writef("\n\t%s: ", message);
read(" %s", );
return c;
}


Re: User imput string int and float[DOUBT]

2017-02-16 Thread Ali Çehreli via Digitalmars-d-learn

On 02/16/2017 02:05 PM, Jean Cesar wrote:

> So I used get methods and sets only as initial pattern to netender the
> functioning of the language in relation to some concepts of the same

Makes sense...

> how to leave a very small code with the largest number of
> Possible functionality type

I think D is very suitable for that.

> I still do not know very well or use
> constructors in C ++

Understandable: Many coding guidelines eschew doing non-trivial work in 
constructors. They require a member function like obj.initialize(/* ... 
*/) to be called in order to get a functioning object.


> but I have very high potential in a code with
> multiple inheritance

That's going to be a problem because D does not allow multiple inheritance.

> I think of compilers in the case of the code that
> favors me in reading so I would do something like:
>
> void main ()
> {
>minhaclasse c = new minhaclasse(string text);
>minhaclasse d = new minhaclasse(int number);
>
>  write("Enter your name: ")
>  c.set();

So, your minhaclasse is basically ValorLegível (ReadableValue), which 
would not scale because likely it's also writable and movable, etc. And 
that explains why you're looking for multiple inheritance. :)


// NOT valid D (and no, I don't speak Portuguese)
class MinhaValor : ValorLegível, ValorEscrita, ValorMóvel /*, ... */ {
// ...
}

> void main ()
> {
>   string txt;
>Int num;
>  write("Enter your name: ")
>  minhaclasse(text).set();
>
>  write("Enter your age: ")
>  minhaclasse(num).set();
>
>   writeln
>(
> "\n\tString:", minhaclasse(text).print() ;,
> "\n\tInt:", minhaclasse(num).print();
>);
> }
>
> I think of object orientation this way to avoid getting rewritten many
> things so I would only define what the set or get would return by
> initializing the constructor only but I have no idea how to do that ..

You make it sound as if OOP is for code reuse or for reducing code 
repetition. I think regular functions provide that already.


Unless polymorphism is really beneficial, functional style is 
preferable. Additionally, D has this very useful universal function call 
syntax (UFCS), which makes your use case easy to implement, and which my 
earlier code could have benefited from as well.


import std.stdio;
import std.traits;

auto read(T)(ref T t, string message)
if (!isSomeString!T) {
writef("%s: ", message);
readf(" %s", );
return t;
}

auto read(S)(ref S s, string message)
if (isSomeString!S) {
import std.string : strip;
writef("%s: ", message);
s = readln().strip();
return s;
}

class person
{
private:
string name, address;
int age;
float height;

public:
static person fromConsole()
{
auto p = new person();
/* UFCS in action: Note how these are not written as
 *read(p.name, /* ... */)
 */
p.name.read("Enter Your Name");
p.age.read("Enter Your Age");
p.height.read("Enter Your Height");
return p;
}

float getHeight()
{
return height;
}

int getIty()
{
return age;
}

string getNome()
{
return name;
}

}

void main ()
{
person p = person.fromConsole();

writeln(p.getNome());
writeln(p.getIty());
writeln(p.getHeight());
}

> My goal in learning to use languages like Java, C ++, D is with the
> intention of learning the best way to reuse code and orienation to
> objects and also development cross-platform codes that will run in
> standard ansi for, Unix, Linux, Windows, android etc. ..

Ali



Re: User imput string int and float[DOUBT]

2017-02-16 Thread Jean Cesar via Digitalmars-d-learn

On Thursday, 16 February 2017 at 02:17:49 UTC, Ali Çehreli wrote:

On 02/15/2017 05:49 PM, Jean Cesar wrote:

> So I'm a beginner in this language and have very little time
I started
> I'm interested in apprehending concepts of object orientation
> polymorphism inheritance, multiple inheritance as in c ++

D is similar to C++ but also very different.

> but I did not
> understand how to use constructor in it
> Because I simply did.
>
> Class person
> {
>person(){}
>~ Person () {}
> }
>
> And error ...

In D, constructor is always called this():

class Person
{
   this(){}
   ~this() {}
}

void main() {
auto p = new Person();
}

Ali




So I used get methods and sets only as initial pattern to 
netender the functioning of the language in relation to some 
concepts of the same I intend to learn it not because it is a new 
language, but I want to understand how to leave a very small code 
with the largest number of Possible functionality type I still do 
not know very well or use constructors in C ++ but I have very 
high potential in a code with multiple inheritance, I think of 
compilers in the case of the code that favors me in reading so I 
would do something like:


void main ()
{
   minhaclasse c = new minhaclasse(string text);
   minhaclasse d = new minhaclasse(int number);

 write("Enter your name: ")
 c.set();

 write("Enter your age: ")
 d.set();
  /*
the set method would already fetch user i
imput by mistake for the information automatically
  */

  Writeln
   (
"\n\tString:", c.get (),
"\n\tInt:", d.get ()
   );
}

Or something like:



void main ()
{
  string txt;
   Int num;
 write("Enter your name: ")
 minhaclasse(text).set();

 write("Enter your age: ")
 minhaclasse(num).set();

  writeln
   (
"\n\tString:", minhaclasse(text).print() ;,
"\n\tInt:", minhaclasse(num).print();
   );
}

I think of object orientation this way to avoid getting rewritten 
many things so I would only define what the set or get would 
return by initializing the constructor only but I have no idea 
how to do that ..


My goal in learning to use languages like Java, C ++, D is with 
the intention of learning the best way to reuse code and 
orienation to objects and also development cross-platform codes 
that will run in standard ansi for, Unix, Linux, Windows, android 
etc. ..


Re: User imput string int and float[DOUBT]

2017-02-15 Thread Ali Çehreli via Digitalmars-d-learn

On 02/15/2017 05:49 PM, Jean Cesar wrote:

> So I'm a beginner in this language and have very little time I started
> I'm interested in apprehending concepts of object orientation
> polymorphism inheritance, multiple inheritance as in c ++

D is similar to C++ but also very different.

> but I did not
> understand how to use constructor in it
> Because I simply did.
>
> Class person
> {
>person(){}
>~ Person () {}
> }
>
> And error ...

In D, constructor is always called this():

class Person
{
   this(){}
   ~this() {}
}

void main() {
auto p = new Person();
}

Ali



Re: User imput string int and float[DOUBT]

2017-02-15 Thread Jean Cesar via Digitalmars-d-learn

On Wednesday, 15 February 2017 at 23:40:41 UTC, Ali Çehreli wrote:

On 02/15/2017 03:20 PM, Jean Cesar wrote:
How do I make a class person where I use set and get methods 
to imput

the user type:


I have some information here:

  http://ddili.org/ders/d.en/input.html

You should also know how to read strings:

  http://ddili.org/ders/d.en/strings.html

And this section about refactoring has the concept of a 
readInt() function template:


  
http://ddili.org/ders/d.en/functions.html#ix_functions.refactor


Combining all three:

import std.stdio;
import std.traits;

auto read(T)(ref T t, string message)
if (!isSomeString!T) {
writef("%s: ", message);
readf(" %s", );
return t;
}

auto read(S)(ref S s, string message)
if (isSomeString!S) {
import std.string : strip;
writef("%s: ", message);
s = readln().strip();
return s;
}

class person
{
private:
string name, address;
int age;
float height;

public:
void setNome()
{
read(name, "Enter Your Name");
}

void setIty()
{
read(age, "Enter Your Age");
}

void setHeight()
{
read(height, "Enter Your Height");
}

float getHeight()
{
return height;
}

int getIty()
{
return age;
}

string getNome()
{
return name;
}

}

void main ()
{
person p = new person();

p.setNome();
p.setIty();
p.setHeight();

writeln(p.getNome());
writeln(p.getIty());
writeln(p.getHeight());
}

Unrelated, a bunch of get/set methods is commonly seen as 
inferior to a design where another piece of code does the 
reading and makes the object after the fact:


person readPerson(File input) {
// ... parse the input ...
// Potentially, use the constructor:
auto p = new person(name, age, /* ... */);
return p;
}

One reason is the fact that the person may be seen as 
incomplete and unusable unless all fields are set. Again, it's 
beside the point... :)


Ali


So I'm a beginner in this language and have very little time I 
started I'm interested in apprehending concepts of object 
orientation polymorphism inheritance, multiple inheritance as in 
c ++, but I did not understand how to use constructor in it

Because I simply did.

Class person
{
   person(){}
   ~ Person () {}
}

And error ...


Re: User imput string int and float[DOUBT]

2017-02-15 Thread Ali Çehreli via Digitalmars-d-learn

On 02/15/2017 03:20 PM, Jean Cesar wrote:

How do I make a class person where I use set and get methods to imput
the user type:


I have some information here:

  http://ddili.org/ders/d.en/input.html

You should also know how to read strings:

  http://ddili.org/ders/d.en/strings.html

And this section about refactoring has the concept of a readInt() 
function template:


  http://ddili.org/ders/d.en/functions.html#ix_functions.refactor

Combining all three:

import std.stdio;
import std.traits;

auto read(T)(ref T t, string message)
if (!isSomeString!T) {
writef("%s: ", message);
readf(" %s", );
return t;
}

auto read(S)(ref S s, string message)
if (isSomeString!S) {
import std.string : strip;
writef("%s: ", message);
s = readln().strip();
return s;
}

class person
{
private:
string name, address;
int age;
float height;

public:
void setNome()
{
read(name, "Enter Your Name");
}

void setIty()
{
read(age, "Enter Your Age");
}

void setHeight()
{
read(height, "Enter Your Height");
}

float getHeight()
{
return height;
}

int getIty()
{
return age;
}

string getNome()
{
return name;
}

}

void main ()
{
person p = new person();

p.setNome();
p.setIty();
p.setHeight();

writeln(p.getNome());
writeln(p.getIty());
writeln(p.getHeight());
}

Unrelated, a bunch of get/set methods is commonly seen as inferior to a 
design where another piece of code does the reading and makes the object 
after the fact:


person readPerson(File input) {
// ... parse the input ...
// Potentially, use the constructor:
auto p = new person(name, age, /* ... */);
return p;
}

One reason is the fact that the person may be seen as incomplete and 
unusable unless all fields are set. Again, it's beside the point... :)


Ali



User imput string int and float[DOUBT]

2017-02-15 Thread Jean Cesar via Digitalmars-d-learn
How do I make a class person where I use set and get methods to 
imput the user type:


Import std.stdio;

class person
{
  private:
  string name, address;
  int age;
  float height;

public:
  void setNome()
  {
write("Enter Your Name:");
// the problem is here how am I going to read the imput of a 
string typed by the user?

  }

void setIty()
{
   write("Enter Your Age:");
  // Another problem here also to read integer values like I 
would?

}

void setHeight()
{
  write("Enter Your Height:");
  // Another problem here also to read floats or double values 
like I would?

}

float getHeight()
{
  return height;
}

int getIty()
{
  return age;
}

string getNome()
{
  return name;
}

}

void main ()
{
  person p = new person();

  p.setName();
  p.setIdade();
  p.setHeight();

  p.getName();
  p.getIdade();
  p.getHeight();
}