Hi, I have created a program first as a console application. Then I created a windows application and copied the class data there. It is shown below. In the console application, I have used the printData() method to output the data of an instance of a Person or Athlete class. I want to do the same, but now that output should be in the label. I have created the printWindows data() function but when I call it from the main function in the for loop it doesn't work.
Any help would be appreciated.
namespace windowsPracticingWithClasses
{
///
/// Summary description for Form1.
///
public class Person : System.Windows.Forms.Form
{
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
//My instance variables
private string firstName, lastName;
private int age;
private double height, weight;
private string bankName;
private double bankAccount;
private double balance = 0;
private string squareColor;
# region Properties
//Properties
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
and other properties.....
#endregion
//Custom constructor
public Person(int age, double height, double weight, string bankName, double bankAccount, double balance)
{
InitializeComponent();
this.age = age;
this.height = height;
this.weight = weight;
this.bankName = bankName;
this.bankAccount = bankAccount;
this.balance = balance;
}
public virtual void printData()
{
Console.WriteLine("\nProfile: \n\nAge: " + this.age);
Console.WriteLine("Height: " + this.height);
Console.WriteLine("Weight: " + this.weight);
Console.WriteLine("Bank Name: " + this.bankName);
Console.WriteLine("Bank Account: " + this.bankAccount);
Console.WriteLine("Balance: " + this.balance);
}
public void printWindowsData()
{
label1.Text += "Age: " + this.age;
label1.Text += "\nHeight: " + this.height;
label1.Text += "\nWeight: " + this.weight;
label1.Text += "\nBank Name: " + this.bankName;
label1.Text += "\nBank Account: " + this.bankAccount;
label1.Text += "\nBalance: " + this.balance;
}
class Athlete : Person
{
public string sport;
public Athlete(string sport) : base(23,5.6,120,"Chase",5671234,1000)
{
this.sport = sport;
}
public override void printData()
{
base.printData();
Console.WriteLine("Sport Practicing: " + this.sport);
}
};
class TestClasses
{
[STAThread]
static void Main()
{
Application.Run(new Person());
Person[] person = new Person[5];
person[0] = new Person(22,5.6,120,"Chase",5671234,2000);
person[0].printData();
Person[] athlete = new Athlete[3];
athlete[0] = new Athlete("Martial Arts");
athlete[0].FirstName = "Kim";
athlete[0].LastName = "Chung";
athlete[0].Age = 21;
athlete[0].Height1 = 5.7;
athlete[0].Weight = 130;
athlete[0].BankName = "Citi";
athlete[0].BankAccount = 212312;
athlete[0].Balance = 300;
for (int i = 0; i < athlete.Length; i++)
{
athlete[i].printWindowsData();
}
AnttiPosted Jan 26, 2006, 5:19 AM
And you have a very strange kind of inheritance, Person inherited from Form?? A "person is a form". I don't think so.
Simplest way is to inherit a form, for example PersonForm, and add in it a private field as Person object. So you make Person class, but you don't inherit it from no where (but Object). The responsibility of the PersonForm is simply to interact with user and Person class. Person class is a data stucture that contains only person related information. It's very important to think which class has what responsibilities.
Heres some parts you to start with:
class PersonForm : Form
{
...
private Person;
public Person Person
{
get
{
return this.person;
}
set
{
this.person = value;
}
}
...
}
class Person
{
...
private string firstName;
public string FirstName
{
get
{
return this.firstName;
}
set
{
this.firstName = value;
}
}
public override string ToString(){...}
...
}
This helps you to divide UI and functionalities in your program. Thus you can use the very same Person class in a console program too. If you need to print out some personal info to the user, just call the public properties of the person object in your PersonForm class. Only PersonForm class itself should ever update its contents if possible!
And please, read a good C# book! Here's the great one: Pro C# 2005 and the .NET 2.0 Platform. You should learn the Object Oriented Programming basics. This is a little bit easier to start with: Programming C#
SimonPosted Jan 25, 2006, 9:11 PM