استفاده صحیح از توارث - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

استفاده صحیح از توارث

0 امتیاز

سلام.من یه برنامه با استفاده از توارث نوشتم که یه سری اطلاعاتو از کاربر بگیره و بعد همون ها رو با استفاده از توارث نشون بده..و برنامه درست کار می کنه ولی مطمئن نیستم که قسمت توارثش درست کار کنه..
ممنون می شم اگه بگید درسته یا نه و اگر نه کجا رو درست کنم.
اینم برنامم

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public static string fname;
        public static string lname;
        public static string doname;
        public static int num;
        public static int nbed;
        static void Main(string[] args)
        {
            Console.WriteLine("enter first name of patient");
            fname = Convert.ToString(Console.ReadLine());
            Console.WriteLine("enter last name of Patient");
            lname = Convert.ToString(Console.ReadLine());
            Console.WriteLine("enter doctor name");
            doname = Convert.ToString(Console.ReadLine());
            Console.WriteLine("enter patient telephone number");
            num = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("enter bed number");
            nbed = Convert.ToInt16(Console.ReadLine());
            Patient p1 = new Patient(fname, lname, num, nbed, doname);
            Console.WriteLine("Your patient info with inheritance is:");
            Console.WriteLine(" name: " + fname + " " + lname + ", doctor name: " + doname + ", telephone number: " + num + ", bed number: " + nbed);
            Console.ReadLine();
        }
        
    }
}

اینم کد کلاس مبنا

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Hospital
    {
        private string firstname;
        private string lastname;
        private int telephone;
        public string Firstname
        {
            get
            {
                return firstname;
            }
        }
        public string Lastname
        {
            get
            {
                return lastname;
            }
        }
        public int Telephone
        {
            get
            {
                return telephone;
            }
            set
            {
                telephone = value;
            }
        }
    }
}

اینم کد کلاس فرزند

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Patient:Hospital
    {
        private int bednum;
        private string docname;
        public Patient(string first, string last, int tel, int bed, string dname):base ()
        {
            Bednum = bed;
            Docname = dname;
        }
        public int Bednum
        {
            get
            {
                return bednum;
            }
            set
            {
                bednum = value;
            }

        }
        public string Docname
        {
            get
            {
                return docname;
            }
            set
            {
                docname = value;
            }
        }
              
    }
}

 

سوال شده اردیبهشت 12, 1393  بوسیله ی Sher228 (امتیاز 167)   18 33 44
دوباره تگ گذاری شد شهریور 11, 1393 بوسیله ی BlueBlade

1 پاسخ

0 امتیاز


سلام

 Syntax برنامه شما کاملا درسته  وراثت هم به درستی انجام شده و از سازنده پیش فرض کلاس پدر هم  به درستی استفاده شده اما مشکل اینجاست که از مقادیر کلاس پدر استفاده نکردین  و شی p1 آرگومانهایی fname, lname,num رو اضافه دریافت کرده.

 "" سازنده کلاس فرزند آرگومان ها ی  first,last,tel رو اضافه دریافت کرده "".

طبق این برنامه فیلدهای first name, lastname در کلاس Hospital باید از حالت ReadOnly یا فقط خواندنی خارج بشن و قابلیت دریافت مقادیر رو هم داشته باشن.

کلاس پدر رو به این صورت تعریف کنین

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication18
{
    class Hospital
    {
        private string firstname;
        private string lastname;
        private int telephone;
    
        public string Firstname
        {
            get
            {
                return firstname;
            }
            set
            {
                firstname = value;
            }
        }
        public string Lastname
        {
            get
            {
                return lastname;
            }
            set 
            {
                lastname = value;
            }
        }
        public int Telephone
        {
            get
            {
                return telephone;
            }
            set
            {
                telephone = value;
            }
        }
    }
}


 
و سازنده کلاس فرزند رو به این صورت تعریف کنین

        public Patient(string first, string last, int tel, int bed, string dname):base()
        {
            Firstname = first;
            Lastname = last;
            Telephone = tel;
            Bednum = bed;
            Docname = dname;

        }



ولی در کل برنامه شما در ارث بری مشکلی نداره  تنها یه اشکال داشت که فیلدهای شما بدون استفاده باقی مونده بودن.

موفق باشید

پاسخ داده شده تیر 23, 1393 بوسیله ی امیدوار (امتیاز 872)   21 63 76
ویرایش شده تیر 24, 1393 بوسیله ی امیدوار
...