انجمن های تخصصی علوم رایانه و هنرهای دیجیتال
تمرینهای مربوط به کنسول اپلیکیشن ConsoleApplication - نسخه‌ی قابل چاپ

+- انجمن های تخصصی علوم رایانه و هنرهای دیجیتال (https://www.forum.cgaria.com)
+-- انجمن: رایانه (https://www.forum.cgaria.com/forum-236.html)
+--- انجمن: برنامه نویسی | طراحی وب (https://www.forum.cgaria.com/forum-22.html)
+---- انجمن: برنامه نویسی (https://www.forum.cgaria.com/forum-26.html)
+----- انجمن: c# | سی‌شارپ (https://www.forum.cgaria.com/forum-87.html)
+----- موضوع: تمرینهای مربوط به کنسول اپلیکیشن ConsoleApplication (/thread-224.html)

صفحه‌ها: 1 2


استفاده از توابع همنام کلاس پایه در کلاس فرزند - Mohsen Omidvar - 07-06-2013

استفاده از توابع همنام کلاس پایه در کلاس فرزند :
اگر تابع همنام پدر باشد هنگام فراخوانی تابع فرزند فراخوانی می شود .
برای استفاده از تابع پدر قبل از نام تابع کلمه کلیدی base را قرار می دهیم .
برای ایجاد یک تابع همنام پدر قبل از نام تابع در فرزند از کلمه کلیدی new استفاده می شود.



چند ریختی(پلی مورفیسم) - Mohsen Omidvar - 07-06-2013

در چند ریختی یک یا چند تابع در کلاس پایه یا در کلاس انتزاعی به صورت انتزاعی تعریف می شوند سپس این توابع با شکلهای مختلف در کلاسهای فرزند مورد استفاده قرار می گیرند.
به عنوان مثال کلاس شی به صورت انتزاعی تعریف شده و وجود خارجی ندارد سپس تابع مساحت را در آن به صورت انتزاعی تعریف می کنیم و تابع مساخت را در هر فرزند با شکلهای مختلف مساحت هر شکل محاسبه می شود.

مثال) کلاسی به نام صف تعریف کنید که امکان اضافه و حذف به صف وجود داشته باشد؟
کد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace array
{
    class Program
    {
        class array
        {
            private int [] a;
            private int len;
            public array(int n)
            {
                len=n;
                a=new int(n);
            }
            public void input()
            {
                for (int i=0;i<len;i++)
                    a[i]=Convert.ToInt32(Console.WriteLine());
            }
            public array eshterak(array other)
            {
                for(int i=0;i<len;i++)
                for(int j=0;j<other.len;j++)
               if(a[i]=other.a[j])
                {
                Console.WriteLine(a[i].ToString()+",");
                break;
               }

            }
            static void Main(string[] args)
            {
                array p, q;
                p = new array(19);
                q = new array(87);
                p.input();
                q.input();
                p.eshterak(q);
                Console.ReadKey();
            
        }
    }
}



چند ریختی(پلی مورفیسم) - Mohsen Omidvar - 07-06-2013

برای تمرین یک کلاس انتزاعی قبل از کلمه کلیدی class کلمه abstract را می نویسیم سپس برای تعریف هر تابع مجازی باید قبل از تعریف هر تابع از کلمه abstract استفاده کنیم .زمانی که در کلاسهای فرزند به ریختهای مختلف توابع مجازی را تعریف می کنیم باید قبل از تعریف تابع از کلمه override استفاده کنیم.
مثال)کلاسی به نام شکل تعریف کنید که الف )در این کلاس بتوان کلاسهای مستطیل،دایره و مربع را از آن ارث ببرد(توابع مساحت و محیط به صورت مجازی تعریف شود)
ب) مساحت و محیط هر شکل را به طور جداگانه محاسبه و نمایش دهد.
کد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace shape
{
    class Program
    {
        abstract class shape
        {
            public abstract void mohit();
            public abstract void masahat();
            public abstract void input();
        };
        class rect : shape
        {
            private int x, y;
            public override void mohit()
            {
                int m = (x * y) * 2;
                Console.WriteLine("Mohit mostatil = "+m.ToString());
            }
            public override void masahat()
            {
                int s = x * y;
                Console.WriteLine("Masahat mostatil = "+s.ToString());
            }
            public override void input()
            {
                x = Convert.ToInt32(Console.ReadLine());
                y = Convert.ToInt32(Console.ReadLine());
            }

        };
        class circle:shape
        {
            private double r;
            public override void  masahat()
            {
                double s = r * r * 3.14;
                Console.WriteLine("Masahat daiere = "+s.ToString());
            }
            public override void  mohit()
            {
                double m=2*3.14*r;
                Console.WriteLine("Mohit daiere = "+m.ToString());
            }
            public override void  input()
            {
                r=Convert.ToDouble(Console.ReadLine());
            }
        }
        class moraba:shape
        {
            private int x;
            public override void  masahat()
            {
                int s=x*x;
                Console.WriteLine("Masahat Moraba = "+s.ToString());
            }
            public override void mohit()
            {
                int m=x*4;
                Console.WriteLine("Mohit Moraba = " + m.ToString());
                Console.WriteLine(m.ToString());
            }
            public override void  input()
            {
                x=Convert.ToInt32(Console.ReadLine());
            }
        }


        static void Main(string[] args)
        {
            shape s;
            rect r;
            r=new rect();
            s=r;
            s.input();
            s.masahat();
            s.mohit();
            circle c;
            c=new circle();
            s=c;
            s.input();
            s.masahat();
            s.mohit();
            moraba m;
            m=new moraba();
            s=m;
            s.input();
            s.masahat();
            s.mohit();
            Console.ReadKey();
        }
    }
}