在另一个对象中实例化一个对象?(c#)

在另一个对象中实例化一个对象?(c#),c#,class,oop,edx,C#,Class,Oop,Edx,首先,我想说,如果这是一个愚蠢的问题,我真的很抱歉,但我刚刚开始学习课程,我认为我能理解它,但这让我很困惑,所以我似乎没有 我在做一门C#OOP edx课程,我必须在不同的课堂文件中设置5个班级(学生、教师、网络图、学位、课程),任务如下: 实例化一个名为信息技术的UProgram对象 在UProgram对象中实例化一个Degree对象,如bacher 在Degree对象内实例化一个名为softing的课程对象 完成了,(希望)没有问题 和3嗯 我是怎么想的(记住,我是个初学者): 首先,我想

首先,我想说,如果这是一个愚蠢的问题,我真的很抱歉,但我刚刚开始学习课程,我认为我能理解它,但这让我很困惑,所以我似乎没有

我在做一门C#OOP edx课程,我必须在不同的课堂文件中设置5个班级(学生、教师、网络图、学位、课程),任务如下:

  • 实例化一个名为信息技术的UProgram对象
  • 在UProgram对象中实例化一个Degree对象,如bacher
  • 在Degree对象内实例化一个名为softing的课程对象
  • 完成了,(希望)没有问题
  • 和3嗯
  • 我是怎么想的(记住,我是个初学者): 首先,我想到了嵌套类,但我不确定它们是如何工作的,也不认为我可以将类放入不同的文件中,因为它们应该嵌套(?) 然后我尝试了一些构造函数,但我不知道如何使它工作

    所以现在我的最后一次尝试是在类内创建方法(除了教师和学生,因为他们不会有任何“属于他们”的东西,就像一门课程有学生和教师属于它一样)

    所以我有一个方法,形式是(-假设我们在学位班,有一个方法为这个学位创建几个课程-):

    在我使用它之前,我必须写下

    Course softeng = new Course();
    
    在我完成任务的3.点之前,我先做一个课程类的实例

    整个代码:

    UProgram.cs

    public class UProgram
    {
        public void Newdegree(string Dname, Degree sth)
        {
            sth = new Degree();
            sth.Dname = Dname;
        }
    }
    
    public class Degree : UProgram
    {
        public string Dname { get; set; }
        public void Newcourse(string Cname, Course sth)
        {
            sth = new Course();
            sth.Cname = Cname;
        }
    }
    
    public class Course : Degree
    {
        public void NewTeacher(string FirstName, string LastName, Teacher sth)
        {
            sth = new Teacher();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public void NewStudent(string FirstName, string LastName, Student sth)
        {
            sth = new Student();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public string Cname { get; set; }
    }
    
    public class Teacher : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class Student : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class Program
        {
            static void Main(string[] args)
            {
                var Information_Technology = new UProgram();
                Degree bachelors = new Degree();
                Information_Technology.Newdegree("Bachelors", bachelors);
                Course softeng = new Course();
                bachelors.Newcourse("Software Engineering", softeng);
                Teacher t1 = new Teacher();
                softeng.NewTeacher("Colin", "Firth", t1);
                Student s1 = new Student();
                softeng.NewStudent("Mary", "Sue", s1);
                Student s2 = new Student();
                softeng.NewStudent("Joseph", "Jojo", s2);
                Console.ReadLine();
            }
        }
    
    学位.cs

    public class UProgram
    {
        public void Newdegree(string Dname, Degree sth)
        {
            sth = new Degree();
            sth.Dname = Dname;
        }
    }
    
    public class Degree : UProgram
    {
        public string Dname { get; set; }
        public void Newcourse(string Cname, Course sth)
        {
            sth = new Course();
            sth.Cname = Cname;
        }
    }
    
    public class Course : Degree
    {
        public void NewTeacher(string FirstName, string LastName, Teacher sth)
        {
            sth = new Teacher();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public void NewStudent(string FirstName, string LastName, Student sth)
        {
            sth = new Student();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public string Cname { get; set; }
    }
    
    public class Teacher : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class Student : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class Program
        {
            static void Main(string[] args)
            {
                var Information_Technology = new UProgram();
                Degree bachelors = new Degree();
                Information_Technology.Newdegree("Bachelors", bachelors);
                Course softeng = new Course();
                bachelors.Newcourse("Software Engineering", softeng);
                Teacher t1 = new Teacher();
                softeng.NewTeacher("Colin", "Firth", t1);
                Student s1 = new Student();
                softeng.NewStudent("Mary", "Sue", s1);
                Student s2 = new Student();
                softeng.NewStudent("Joseph", "Jojo", s2);
                Console.ReadLine();
            }
        }
    
    课程.cs

    public class UProgram
    {
        public void Newdegree(string Dname, Degree sth)
        {
            sth = new Degree();
            sth.Dname = Dname;
        }
    }
    
    public class Degree : UProgram
    {
        public string Dname { get; set; }
        public void Newcourse(string Cname, Course sth)
        {
            sth = new Course();
            sth.Cname = Cname;
        }
    }
    
    public class Course : Degree
    {
        public void NewTeacher(string FirstName, string LastName, Teacher sth)
        {
            sth = new Teacher();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public void NewStudent(string FirstName, string LastName, Student sth)
        {
            sth = new Student();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public string Cname { get; set; }
    }
    
    public class Teacher : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class Student : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class Program
        {
            static void Main(string[] args)
            {
                var Information_Technology = new UProgram();
                Degree bachelors = new Degree();
                Information_Technology.Newdegree("Bachelors", bachelors);
                Course softeng = new Course();
                bachelors.Newcourse("Software Engineering", softeng);
                Teacher t1 = new Teacher();
                softeng.NewTeacher("Colin", "Firth", t1);
                Student s1 = new Student();
                softeng.NewStudent("Mary", "Sue", s1);
                Student s2 = new Student();
                softeng.NewStudent("Joseph", "Jojo", s2);
                Console.ReadLine();
            }
        }
    
    Teacher.cs

    public class UProgram
    {
        public void Newdegree(string Dname, Degree sth)
        {
            sth = new Degree();
            sth.Dname = Dname;
        }
    }
    
    public class Degree : UProgram
    {
        public string Dname { get; set; }
        public void Newcourse(string Cname, Course sth)
        {
            sth = new Course();
            sth.Cname = Cname;
        }
    }
    
    public class Course : Degree
    {
        public void NewTeacher(string FirstName, string LastName, Teacher sth)
        {
            sth = new Teacher();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public void NewStudent(string FirstName, string LastName, Student sth)
        {
            sth = new Student();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public string Cname { get; set; }
    }
    
    public class Teacher : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class Student : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class Program
        {
            static void Main(string[] args)
            {
                var Information_Technology = new UProgram();
                Degree bachelors = new Degree();
                Information_Technology.Newdegree("Bachelors", bachelors);
                Course softeng = new Course();
                bachelors.Newcourse("Software Engineering", softeng);
                Teacher t1 = new Teacher();
                softeng.NewTeacher("Colin", "Firth", t1);
                Student s1 = new Student();
                softeng.NewStudent("Mary", "Sue", s1);
                Student s2 = new Student();
                softeng.NewStudent("Joseph", "Jojo", s2);
                Console.ReadLine();
            }
        }
    
    Student.cs

    public class UProgram
    {
        public void Newdegree(string Dname, Degree sth)
        {
            sth = new Degree();
            sth.Dname = Dname;
        }
    }
    
    public class Degree : UProgram
    {
        public string Dname { get; set; }
        public void Newcourse(string Cname, Course sth)
        {
            sth = new Course();
            sth.Cname = Cname;
        }
    }
    
    public class Course : Degree
    {
        public void NewTeacher(string FirstName, string LastName, Teacher sth)
        {
            sth = new Teacher();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public void NewStudent(string FirstName, string LastName, Student sth)
        {
            sth = new Student();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public string Cname { get; set; }
    }
    
    public class Teacher : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class Student : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class Program
        {
            static void Main(string[] args)
            {
                var Information_Technology = new UProgram();
                Degree bachelors = new Degree();
                Information_Technology.Newdegree("Bachelors", bachelors);
                Course softeng = new Course();
                bachelors.Newcourse("Software Engineering", softeng);
                Teacher t1 = new Teacher();
                softeng.NewTeacher("Colin", "Firth", t1);
                Student s1 = new Student();
                softeng.NewStudent("Mary", "Sue", s1);
                Student s2 = new Student();
                softeng.NewStudent("Joseph", "Jojo", s2);
                Console.ReadLine();
            }
        }
    
    Program.cs

    public class UProgram
    {
        public void Newdegree(string Dname, Degree sth)
        {
            sth = new Degree();
            sth.Dname = Dname;
        }
    }
    
    public class Degree : UProgram
    {
        public string Dname { get; set; }
        public void Newcourse(string Cname, Course sth)
        {
            sth = new Course();
            sth.Cname = Cname;
        }
    }
    
    public class Course : Degree
    {
        public void NewTeacher(string FirstName, string LastName, Teacher sth)
        {
            sth = new Teacher();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public void NewStudent(string FirstName, string LastName, Student sth)
        {
            sth = new Student();
            sth.FirstName = FirstName;
            sth.LastName = LastName;
        }
        public string Cname { get; set; }
    }
    
    public class Teacher : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class Student : Course
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class Program
        {
            static void Main(string[] args)
            {
                var Information_Technology = new UProgram();
                Degree bachelors = new Degree();
                Information_Technology.Newdegree("Bachelors", bachelors);
                Course softeng = new Course();
                bachelors.Newcourse("Software Engineering", softeng);
                Teacher t1 = new Teacher();
                softeng.NewTeacher("Colin", "Firth", t1);
                Student s1 = new Student();
                softeng.NewStudent("Mary", "Sue", s1);
                Student s2 = new Student();
                softeng.NewStudent("Joseph", "Jojo", s2);
                Console.ReadLine();
            }
        }
    
    我知道,我知道,这很复杂,我甚至不确定这是否是好的,但这是我能想到的全部,如果你们中的任何人能帮助我,我将非常感激(语气不会让我哭泣)


    再次感谢您,很抱歉代码如此混乱,呃,我试过了

    这个措词看起来确实有点奇怪,但我相信他们只是说这个类应该包含它要“包含”的类型的属性,并在构造函数中实例化它。例如:

    public class Degree
    {
        public Course Course { get; set; }
    
        public Degree()
        {
            Course = new Course();
        }
    }
    
    public class Course
    {
        public Student Student { get; set; }
    
        public Course()
        {
            Student = new Student();
        }
    }
    
    public class Student
    {
        public Student()
        {
    
        }
    }
    
    创建学位实例时,它将在其中创建课程实例,这将在其中创建学生实例。因此,学位包含包含学生的课程

    上面的示例使用构造函数实例化这些属性,但由于它们是公共属性,因此也可以从外部创建它们(在这种情况下,上面的构造函数是不必要的):


    这个措词看起来确实有点奇怪,但我相信他们只是说这个类应该包含它要“包含”的类型的属性,并在构造函数中实例化它。例如:

    public class Degree
    {
        public Course Course { get; set; }
    
        public Degree()
        {
            Course = new Course();
        }
    }
    
    public class Course
    {
        public Student Student { get; set; }
    
        public Course()
        {
            Student = new Student();
        }
    }
    
    public class Student
    {
        public Student()
        {
    
        }
    }
    
    创建学位实例时,它将在其中创建课程实例,这将在其中创建学生实例。因此,学位包含包含学生的课程

    上面的示例使用构造函数实例化这些属性,但由于它们是公共属性,因此也可以从外部创建它们(在这种情况下,上面的构造函数是不必要的):

    仅作几点评论:

    我很怀疑你是否需要继承。例如:学生:课程-我怀疑“学生就是课程”:。所以,你可能需要一些构图。我不知道(也不记得)你照片中的钻石到底是什么意思,但我可以猜到,填充的钻石——是一件物品(或者至少是一件,不确定),而空的钻石意味着很多物品。 下面是我的做法(您可以将每个类拆分为单独的文件):

    public类文件
    {
    公共字符串名称{get;set;}
    公共度{get;set;}
    公共图(字符串名称、度)
    {
    名称=名称;
    度=度;
    }
    }
    公立学位
    {
    公共字符串名称{get;set;}
    公共课程{get;set;}
    公共学位(字符串名称、课程)
    {
    名称=名称;
    课程=课程;
    }
    }
    公共课
    {
    公共列表教师{get;set;}
    公共列表学生{get;set;}
    公共字符串名称{get;set;}
    公共课程(字符串名称、教师列表、学生列表)
    {
    名称=名称;
    教师=教师;
    学生=学生;
    }
    }
    公共班主任
    {
    公共字符串名{get;set;}
    公共字符串LastName{get;set;}
    }
    公立班学生
    {
    公共字符串名{get;set;}
    公共字符串LastName{get;set;}
    }
    
    主要功能:

    static void Main(string[] args)
        {
            var teachers = new List<Teacher>
            {
                new Teacher
                {
                    FirstName = "Colin",
                    LastName = "Firth"
                }
            };
            var students = new List<Student>
            {
                new Student
                {
                    FirstName = "Mary",
                    LastName = "Sue"
                },
                new Student
                {
                    FirstName = "Joseph",
                    LastName = "Jojo"
                }
            };
    
            var softEngCourse = new Course("Software Engineering", teachers, students);
            var bachelorDegree = new Degree("Bachelor", softEngCourse);
    
            var technologyProgram = new UProgram("Technology", bachelorDegree);
    
            Console.ReadLine();
        }
    
    static void Main(字符串[]args)
    {
    var教师=新名单
    {
    新教师
    {
    FirstName=“科林”,
    LastName=“弗斯”
    }
    };
    var students=新列表
    {
    新生
    {
    FirstName=“玛丽”,
    LastName=“苏”
    },
    新生
    {
    FirstName=“约瑟夫”,
    LastName=“Jojo”
    }
    };
    var softEngCourse=新课程(“软件工程”,教师,学生);
    var bachelorDegree=新学位(“学士”,软化课程);
    var technologyProgram=新图谱(“技术”,学士学位);
    Console.ReadLine();
    }
    
    我仍然不确定这是否正是您对课程的期望,这就是我将如何编写这样的代码(有一些小改动,但在这里并不重要)。 为什么会这样?因为当一个对象显式地接收到它所需要的一切时,它几乎总是在“工作”状态下构建一个对象,而不是创建一个将在“无效”状态下启动的原始对象。第二,它