الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعده فى برمجة فئه و الاشتقاق منها

مغلق
بدأه نورس في 14 نوفمبر 2004 · 13 رد · 1,507 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ......

هذي اول مشاركه لي بمنتداكم .... واتمنى ماتكون الاخيرة .....

وهي عبارة عن طلب ومهمة مطلوب مني انجازها ولم اتمكن من ذلك ... حيث ان البرنامج لم يطبق معي .....

والمطلوب التالي ..

يعتمد حل الواجب او المهمة المطلوبه على طرق البرمجه الشيئيه

2/ مخرجات الواجب ومعايير التقييم (outcomes and assessment criteria ):

3/ إعادة استخدام مكونات نظام ما بالاستفادة من مباديء البرمجه الشيئية

3/1 تعديل صنف لتطوير .أصناف جديدة مستندة على صنف اساسي

3/2 معالجة الأستثناءات

3/3 الوراثيه Inheritance، وتعدد التنفيذ polymorphisum

السيناريو : يتم تطوير نظام إدرارة شؤؤن الموظفين في الشركه العربية للصناعات الدوائيه حيث تم بناء البرنامج باستخدام لغة البرمجه فيجوال بيسك . نت ونتيجه لتغير احتياجات الشركه وتطور عملها عمدت الى استشارة متخصصين ليتم تقييم البرامج التي لديهم وبيان اذا كانت هذة البرامج قابله للتطوير وعرضوا عليك جزاً من

البرنامج الذي يعرض الاصناف () المستخدمة في هذا البرنامج لتقييمه وإبداء الرأي في إمكانية التطوير . وقد قمت بدراسة كافية للبرنامج وتبين لك أنه بالامكان إجراء عمليات التطوير لاعتماد البرنامج على طرق البرمجه الشيئيه حيث يمكن إضافة أصناف جديدة للبرنامج مع إمكانية إجراء وراثه للأصناف الموجودة وإضافة النواقص إلى الصنف الجديد . وطلبت منك ادارة الشركه توضيح ذلك من خلال تحقيق هذا المتطلبات على الصنف التالي :

Class emp_ data 
Private emp_ name as string            اسم الموظف 
Private emp_ address as string       عنوان الموظف 
Private emp_ job as string الوظيفه         
Private emp_ degree as string        درجة الموظف 
Private emp_ sal as string  الراتب   

Public property name ( ) as string 
Emp_ nam 
End Get 
Set ( Byval value as string) 
Emp_nam = value

4/ المهمة المطلوبه :

المهمة الاولى : تعديل الصنتف بحيث يحتوي على المعلومات الإضافية .

_ تاريخ تعيين الموظف ، البدلات ، رقم الهاتف .

_ الخصائص اللازمة للتعامل مع البيانات الجديدة .

_ إنشاء صنف جديد إسمه يرث جميع مواصفات الصنف بالإضافه الى البيانات التالية ( رقم القسم ، إسم القسم ، تاريخ إستلام الإدارة )

_ إضافه الخصائص اللزمه للتعامل مع البيانات الجديدة

المهمة الثانية إنشاء برنامج للتعامل مع الصنفين السابقين حسب المواصفات التالية

_ صمم نموذجا خاصا لإدخال بيانات الموظفين .

صمم نموذجا خاصا لإدخال بيانات المدراء

المهمة الثالثه : كتابة تقرير يحتوي على :

# شرح تفصيلي لجميع الجمل البرمجية .

# وضح طريقه عمل البرنامج

واتمنى منكم مساعدتي تكفووووووون ..... واتمنى ذلك قبل يوم الخميس

ومشكورين للجهود المبذوله .....

تقبلوا تحياتي نورس ..

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 14 نوفمبر 2004 في 20:28

#2

للتطوير وعرضوا عليك جزاً من

البرنامج الذي يعرض الاصناف (CLASS) المستخدمة في هذا البرنامج لتقييمه وإبداء الرأي في إمكانية التطوير .

#3

طبعاً مثال جيد للمبتدئين للتعامل مع البرمجه الشيئيه

هل حاولت ان تحل هذا المثال ؟

اعطنا ما قمت به من تجارب حتى و إن كانت خاطئه لاننا لن نعطيك الحل مباشره و إلا ما فائدة البرمجه إذاً

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#4

الاخ طارق ابراهيم ... الف شكر للنظر للموضوع ..

وانا الان سوف اقوم بوضع الكود الذي حاولت فية ان انفذ المهمة المطلوبه مني واللذي لم يطبق معي ...

Option Strict On
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim employee As String
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim emp_data As String
        Dim emp_name, emp_address, emp_gop, emp_degree As String
        Dim emp_sal As Double
        emp_name = TextBox1.Text
        emp_address = TextBox2.Text
        emp_gop = TextBox3.Text
        emp_degree = TextBox4.Text
        emp_sal = CDbl(TextBox5.Text)
        employee(ListBox1) = emp_data
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
        TextBox5.Clear()
        ListBox1.Items.Add("تمت إضافة إسم الموظف")
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class
Class emp_data
    Private emp_name As String
    Private emp_address As String
    Private emp_gop As String
    Private emp_degree As String
    Private emp_sal As Double
    Public Property name() As String
        Get
            Return emp_name
        End Get
        Set(ByVal value As String)
            emp_name = value
        End Set
    End Property
    Public Property emp_address() As String
        Get
            Return emp_address
        End Get
        Set(ByVal value As String)
            emp_address = value
        End Set
    End Property
    Public Property emp_gop() As String
        Get
            Return emp_gop
        End Get
        Set(ByVal value As String)
            emp_gop = value
        End Set
    End Property
    Public Property emp_degree() As String
        Get
            Return emp_degree
        End Get
        Set(ByVal value As String)
            emp_degree = value
        End Set
    End Property
    Public Property sal() As String
        Get
            Return emp_sal
        End Get
        Set(ByVal value As String)
            emp_sal = value
        End Set
    End Property

End Class
Public WriteOnly Property midgrade() As String
    Set(ByVal value As String)
        emp_midterm = value
    End Set
End Property
Public WriteOnly Property final() As String
    Set(ByVal value As String)
        emp_final = value
    End Set
End Property
must inhert class shape
Dim manger_data As String
public property manger_ data() as string
    Get
        Return manger_ data
    End Get
    Set(ByVal value As Double)
        manger _ data = value
    End Set
End Property
MustOverride Function dn() As Double
MustOverride Function dne() As String
MustOverride Function drd() As Double
end class
Class dn
    in herits shap overides function name ()as double
    return dn
    end function
End Class
Class dne
    in herits shap overides function name ()as string
    return dne
    end function

End Class


Class drd
    in herits shap overides function name ()as double
    return drd
    end function

End Class

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 15 نوفمبر 2004 في 12:19

#5

بعد إذنك قمت بحذف الجزء الخاص بال Form Designer Generator لانه لا يفيدنا هنا

الاخطاء الحاليه كما ارى فى عجاله هى :

1- استخدامك اسماء member vriables كاسماء للخواص و هذا خطأ

2- استخدام الكلمات الاساسيه اعتقد ان به اخطاء كتابيه syntax error يعنى must inherits لا يوجد مسافه يعنى المفروض تكتبها mustinherits

3- انت استخدمت اسماء الفئات drd و dn و dre كاسماء طرق (لا ينفع) و عملت لهم overrride كمان

كان المفروض ان تقوم بانشاء فئه باسم يدل على وظيفتها ثم تضع الدوال و الطرق التى تريدها و فى حالة عمل overrriding لهذه الدوال (لو قمت بالاشتقاق) كان عليك ان تحدد فى ال base class ان هذه الطرق overridable

اعتقد انك تحتاج لمراجعة الجزء الخاص بال oop من الاول

(ربما اكون انا المخطئ و محتاج اذاكر من اول و جديد من يعلم)

مرفق class لل emp_data يمكنك الاشتقاق منه لتكوين فئات جديده كما تشاء و ساحاول تعديله و تكملة باقى الفئات لاحقاً

emp_data.vb

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 15 نوفمبر 2004 في 19:45

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

هذا مثال بسيط ايضاً قد يحتوى على اخطاء و لكنه يفى بالغرض (يبدو ان هناك متخلف قام بكتابته كالمعتاد معى :D )

empclass.rar

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#7

السلام عليكم .........

الف شكر لك يااخ طارق ابراهيم على الجهود المبذوله .... والشكر والله لايكفي .......

انا استخدمت الكود اللذي وضعته وهو طبعا صحيح والفورما طبقت معي الا انه في نقطتين او ملاحظتين :

1/ بعد ادخال البيانات في التكست الاسم والعنوان . الخ اضغط زر ادخال بيانات الموظفين وبعدها المفروض تخرج لي اخر بيانات موظف قمت بادخاله في اللستة بوكس .

2/ بعد كتابة الكود السابق نكمل علية بانشاء صنف جديد إسمه manger_data يرث جميع مواصفات الصنف emp_data بالاضافه الى البيانات التالية ( رقم القسم ، اسم القسم ، تاريخ استلام الادارة )

_مع اضافة الخصائص اللازمه للتعامل مع البيانات الجديدة .

ممتنه لكم ....نورس

#8

يبدو انك لم تشاهدى الكود بل اهتميت بتنفيذه فقط البرنامج الذى ارفقته ينفذ المطلوب الثانى

المطلوب الاول لا يحتاج سوى لقليل من التفكير فلا كسل افتحى الكود و اقرئيه ثم حاولى و ناقشينا فيه حتى لو اخطأت لكن انا اسف المنتدى ليس لحل الواجب و البرمجه متعه فلماذا نفسدها اتمنى الا يكون كلامى قد ضايق احد

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#9

السلام عليكم

اخي طارق

Dim empdataarr() As emp_new_data
    Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'declare index for array element

        'redim array
        ReDim empdataarr(i)
        'instantiation of the array
        empdataarr(i) = New emp_new_data
        'fill the array
        empdataarr(i).name = TextBox1.Text
        empdataarr(i).memp_address = TextBox2.Text
        empdataarr(i).memp_job = TextBox3.Text
        empdataarr(i).Dep_ID = TextBox4.Text
        empdataarr(i).Dep_name = TextBox5.Text
        empdataarr(i).Dep_recieve_date = CType(TextBox6.Text, Date)
        'show some chosen data in listbox
        ListBox1.Items.Add(empdataarr(i).name & " " & empdataarr(i).memp_address & " " & empdataarr(i).Dep_name)

        i += 1
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            ListBox1.Items.Clear()
            ListBox1.Items.Add(empdataarr(Val(TextBox7.Text)).name & " " & empdataarr(Val(TextBox7.Text)).memp_address & " " & empdataarr(Val(TextBox7.Text)).Dep_name)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        
    End Sub

انت عرفت مصفوفة من نوع empdataarr

وكل اضافة تعمل

ReDim empdataarr(i)

طيب لو انا سجلت 4 سجلات

وحبيت اعرض السجل الثاني

يعطيني رسالة خطاء

فقط يعرض السجل الاخير

لماذا , وكيف اتجاوز المشكلة

#10

بما انك تستخدم مصفوفه للسجلات إذاً للوصول إلى اى سجل لابد من استخدام دليل السجل داخل المصفوفه يعنى ال Index بتاعه داخل المصفوفه عشان توصله

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#11

مو انا عملت تكست وزر

التكست اسمه text7

هذا هو الكود

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       Try
           ListBox1.Items.Clear()
           ListBox1.Items.Add(empdataarr(Val(TextBox7.Text)).name & " " & empdataarr(Val(TextBox7.Text)).memp_address & " " & empdataarr(Val(TextBox7.Text)).Dep_name)
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
       
   End Sub

ولم يستجيب هو المشكلة في

هذا

  'redim array
       ReDim empdataarr(i)
       'instantiation of the array
       empdataarr(i) = New emp_new_data

ReDim اعتقد انه يرجع بصفر دائما

ونفقد القديم من المصفوفة

#12

بامكانك تعديلها إلى Redim Preserve للاحتفاظ بالقيم السابقه للمصفوفه

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 28 نوفمبر 2004 في 16:53

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#13

الله ينور عليك

اخوي طارق

اشتغلت معاي 100%

#14

السلام عليكم ورحمة الله وبركاته

عند تنفيذ الكود ينفذ بشكل صحيح

بس عند الضغط على بتن2 الي يعرض البيانات يعطيني مسج اتمنى توضيحه لي وهو

object reference not set an intance of an object

تم تعديل هذه المشاركة بواسطة مبرمجه جديده في 30 نوفمبر 2004 في 15:50

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…