نمایش نتایج 1 تا 6 از 6

نام تاپیک: دریافت سه عدد از ورودی + اصول شی گرایی

  1. #1
    کاربر دائمی آواتار Sina.iRoid
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    TEH
    پست
    320

    Question دریافت سه عدد از ورودی + اصول شی گرایی

    سلام. ممنون میشم اگر راهنماییم کنید.

    من می خوام یه برنامه ای بنویسم که تعدادی عدد و از کاربر از طریق دیالوگ دریافت کنه و ماکسیمم اون اعداد و حساب کن. می خوام دقیقا تمام اصول شی گرایی رعایت بشه.

    این کلاس : MaximumClass


    package com.Java.iRoid;


    public class MaximumClass {

    double num1, num2, num3;

    //---max method
    public double max(double x, double y, double z){
    setDimension(num1, num2, num3);
    num3 = Math.max(y, z);
    double result = Math.max(num3, x);
    return result;
    }

    //---setDimension method
    public void setDimension(double x, double y, double z){
    x = num1;
    y = num2;
    z = num3;
    }

    //---setter method
    public void setX(double x){
    num1 = x;
    }
    public void setY(double y){
    num2 = y;
    }
    public void setZ(double z){
    num3 = z;
    }
    }


    و این کلاس اصلی برنامه که هیچ کدی و داخلش ننوشتم.


    package com.Java.iRoid;


    public class DriverClass {

    public static void main(String[] args){


    }
    }


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

  2. #2
    کاربر دائمی آواتار Sina.iRoid
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    TEH
    پست
    320

    نقل قول: دریافت سه عدد از ورودی + اصول شی گرایی

    دوستان من کدم و یه تغییراتی داخلش انجام دادم به این صورت شد:

    MaximumClass


    package com.Java.iRoid;


    public class MaximumClass {

    private double numOne;
    private double numTwo;
    private double numThree;
    private double result;

    public void max(double n1, double n2, double n3){
    setNumber(n1, n2, n3);
    n3 = Math.max(n2, n3);
    double result = Math.max(n3, n1);
    this.result = result;
    }
    //---setNumber method
    public void setNumber(double n1, double n2, double n3){
    setNumOne(n1);
    setNumTwo(n2);
    setNumThree(n3);
    }

    //---setter method
    public void setNumOne(double n1){
    numOne = n1;
    }
    public void setNumTwo(double n2){
    numTwo = n2;
    }
    public void setNumThree(double n3){
    numThree = n3;
    }

    //---toString method
    public String toString(){
    return ("The maximum number is: " + result);
    }
    }


    DriverClass


    package com.Java.iRoid;


    import javax.swing.JOptionPane;


    public class DriverClass {

    public static void main(String[] args){

    MaximumClass ob = new MaximumClass();

    ob.setNumOne(Double.parseDouble(JOptionPane.showIn putDialog("Enter 1st num")));
    ob.setNumTwo(Double.parseDouble(JOptionPane.showIn putDialog("Enter 2nd num")));
    ob.setNumThree(Double.parseDouble(JOptionPane.show InputDialog("Enter 3rd num")));

    JOptionPane.showMessageDialog(null, ob, "Time", JOptionPane.INFORMATION_MESSAGE);
    }
    }


    ولی جواب صفر میشه. ممنون اگر راهنماییم کنید.

  3. #3

    نقل قول: دریافت سه عدد از ورودی + اصول شی گرایی

    لطفا همین کد را برای سی شارپ هم بنویسید

  4. #4
    [younes]
    مهمان

    نقل قول: دریافت سه عدد از ورودی + اصول شی گرایی

    ولی جواب صفر میشه. ممنون اگر راهنماییم کنید.
    اولا شما در هیچ جای برنامه از متد max کلاس MaximumClass استفاده نکردید.
    وقتی از seter های one two tree استفاده میکنید دادن سه آرگومان ورودی به متد max بی معنیه چون max از فیلد های numOne numTow numThree استفاده میکنه که قبلا با seter مقدار دهی شدند و دیگه نیازی به این کار نیست. و با توجه به کلاس شما بهتره متد max را یکبار بدون آرگومان overload کنید.


    و برای استفاده در متد main باید:


    public static void main(String[] args){
    MaximumClass ob = new MaximumClass();
    ob.setNumOne(Double.parseDouble(JOptionPane.showIn putDialog("Enter 1st num")));
    ob.setNumTwo(Double.parseDouble(JOptionPane.showIn putDialog("Enter 2nd num")));
    ob.setNumThree(Double.parseDouble(JOptionPane.show InputDialog("Enter 3rd num")));
    ob.max();
    JOptionPane.showMessageDialog(null, ob, "Time", JOptionPane.INFORMATION_MESSAGE);
    }


    و یا :

    public static void main(String[] args){

    MaximumClass ob = new MaximumClass();
    double n1= Double.parseDouble(JOptionPane.showInputDialog("En ter 1st num"));
    double n2= Double.parseDouble(JOptionPane.showInputDialog("En ter 2nd num"));
    double n3= Double.parseDouble(JOptionPane.showInputDialog("En ter 3rd num"));
    ob.max(n1,n2,n3);

    JOptionPane.showMessageDialog(null, ob, "Time", JOptionPane.INFORMATION_MESSAGE);





  5. #5
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: دریافت سه عدد از ورودی + اصول شی گرایی

    سلام.

    توی شی گرایی، باید این 3 اصول اولیه رو رعایت کنید :

    - Encapsulation : تمامی فیلدها private، در صورت نیاز setter و getter تعریف میکنیم.
    - Inheritance
    - Polymorphism

    حالا با توجه به توضیحی که درباره Encapsulation دادم، سعی کن یبار دیگه کدت رو بازنویسی کنی.

    در مورد پیدا کردن بزرگترین و کوچکترین عدد هم، روشی قشنگ تری هم هست. هر بار که عددی رو از کاربر میگیری، همون موقع با مقایسه کردن با max یا min قبلی، مقدارهای جدید رو پیدا کن.
    یعنی مثلا :


    import java.util.ArrayList;
    import java.util.List;
    import java.util.Objects;


    /**
    * @author avb
    */
    public class DataSet<T extends Comparable<T>> {


    private final List<T> list = new ArrayList<>();
    private T max;
    private T min;


    public void add(T t) {
    Objects.requireNonNull(t);
    if (list.isEmpty()) {
    max = t;
    min = t;
    } else {
    if (t.compareTo(max) > 0) {
    max = t;
    } else if (t.compareTo(min) < 0) {
    min = t;
    }
    }
    list.add(t);
    }


    public boolean remove(T t) {
    return list.remove(t);
    }


    public T removeAt(int index) {
    return list.remove(index);
    }


    public T max() {
    return max;
    }


    public T min() {
    return min;
    }


    public void clear() {
    list.clear();
    }


    @Override
    public String toString() {
    return list.toString();
    }


    public static void main(String[] args) {
    DataSet<Integer> set = new DataSet<>();
    set.add(1);
    set.add(-1);
    set.add(2);
    System.out.println("max = " + set.max());
    System.out.println("min = " + set.min());
    System.out.println(set);
    }


    }

  6. #6

    نقل قول: دریافت سه عدد از ورودی + اصول شی گرایی

    نقل قول نوشته شده توسط Sina.iRoid مشاهده تاپیک
    من می خوام یه برنامه ای بنویسم که تعدادی عدد و از کاربر از طریق دیالوگ دریافت کنه و ماکسیمم اون اعداد و حساب کن. می خوام دقیقا تمام اصول شی گرایی رعایت بشه.
    همیشه یه برنامه نیاز نیست طبق استانداردهای شیءگرایی طراحی بشه. در واقع همونطور که الگو‌های طراحی (Design Pattern) می‌تونن به‌راحتی تبدیل به یه ضدالگو (Anti-pattern) بشن، خود شیءگرایی هم همواره مفید نیست... باید مسئله‌ای که باش روبرویی «به واقع» شیءگرا باشه تا برنامه‌نویسی شی‌ءگرا مفید باشه!
    مثال می‌زنم؛ من می‌خوام یه روبوت سخن‌گو بنویسم که یه‌سری رفتار (Behavior) مثل صحبت کردن، تصمیم‌گیری، تحرک و... رو از خودش نشون بده؛ بخشی از این رفتارها مثل صحبت کردن بروز بیرونی دارن و بعضی دیگه مثل تجزیه و تحلیل و مدار یادگیری، هیچوقت به‌خودی خود بروز پیدا نمی‌کنن، و در ضمن بهتره از دیدرس ناظر بیرونی خارج باشن. این روبوت تعدادی خصوصیت (Property) هم احتمالا داره، مثل میزان شارژ، نام، تنظیمات زبان و... خب خیلی روشنه که برنامه‌نویسی این روبوت باید شیءگرا باشه. چون ما واقعا با یه شیء طرفیم.

    اما آیا این معنیش اینه که هرمسئله‌ای شیءگراست؟ نه.
    بذار سعی کنم یه مسئله‌ی غیرشیءگرا رو بی‌دلیل شیءگرا کنم! می‌خوام برنامه‌ای بنویسم که دوعدد از کاربر بگیره و جمعشون رو چاپ کنه. خب! چون قراره شیءگرا بنویسم پس یه کلاس نیاز دارم که وظیفه‌ش خوندن دوعدد از ورودی کاربر باشه مثلا به نام TwinScanner. به کلاسی نیاز دارم که دوعدد رو بگیره و جمعشون رو محاسبه کنه؛ اسم اینم می‌ذارم TwinSum. و درنهایت یه کلاس نیاز دارم که جمع محاسبه شده رو طی یه فرمت خوب به کاربر نشون بده مثلا به نام TwinOutput. ولی واقعا برای این برنامه به سه‌کلاس نیاز بود؟! اصلا آیا این کلاس‌هایی که نام بردم لزومی به وجودشون هست؟
    تازه من زیاد سخت‌گیری نکردم وگرنه بیش‌از اینا می‌شد کلاس بی‌دلیل تعریف کرد!!!
    پس خیلی وقتا استفاده از شیءگرایی هم خوانایی و هم کارایی برنامه رو کاهش می‌ده و درضمن عیب‌یابی‌ش رو هم مشکل می‌کنه. در واقع من برای پیاده‌سازی این برنامه صرفا به یه برنامه‌ی ساخت‌یافته نیاز دارم نه یه برنامه‌ی شیءگرا.

    برنامه‌ی شمام مشابه همینه (البته می‌دونم که برنامه‌ت رو صرفا برای تمرین می‌نویسی...) ولی هرچقدر هم که سعی کنی استانداردهای شیءگرایی رو توش رعایت کنی درنهایت به یه برنامه‌ی اصطلاحا کاریکاتوری می‌رسی. کافیه برنامه‌ت رو مرتب بنویسی، احیانا متدهای موردنیازت رو با نام و متن مناسب تعریف/استفاده کنی و برنامه‌ت رو تمیز نگه‌داری. در عوض اگه به پیاده‌سازی شیءگرا علاقه داری، برو سمت مسائل واقعا شیءگرا.

    موفق باشی.

تاپیک های مشابه

  1. سوال: الگوریتمی که 100 عدد از ورودی دریافت و مجموع انها را محاسبه کند
    نوشته شده توسط abolfazl2203 در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 3
    آخرین پست: جمعه 23 مهر 1389, 12:21 عصر
  2. دریافت رشته فارسی از ورودی
    نوشته شده توسط hashom در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: یک شنبه 25 آذر 1386, 11:34 صبح
  3. گرفتن عدد از ورودی
    نوشته شده توسط hmd6613 در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 8
    آخرین پست: سه شنبه 08 اسفند 1385, 12:43 عصر
  4. دریافت فقط عدد در EditBox
    نوشته شده توسط mohammad_mahdawi در بخش برنامه نویسی در Delphi
    پاسخ: 9
    آخرین پست: سه شنبه 15 مهر 1382, 00:26 صبح
  5. دریافت معادله ریاضی از ورودی
    نوشته شده توسط حمید پاسلار در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 13
    آخرین پست: سه شنبه 18 شهریور 1382, 12:15 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •