ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조 연습문제
    Java 2023. 2. 21. 14:03
    학습목표

    .을 이용해 연결구조를 알아보자

     

    package ch06;
    
    public class Course {
    
    	private int courseId;
    	private String name;
    	private String description;
    	
    	public Course(int courseId, String name, String description) {
    		this.courseId = courseId;
    		this.name = name;
    		this.description = description;
    	}
    
    	public int getCourseId() {
    		return courseId;
    	}
    
    	public void setCourseId(int courseId) {
    		this.courseId = courseId;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getDescription() {
    		return description;
    	}
    
    	public void setDescription(String description) {
    		this.description = description;
    	}
    
    	
    	
    }
    package ch06;
    
    public class Enrollment {
    
    	//등록 기록
    	//홍길동 학생은 수학 1을 등록한다 (등록기록1)
    	//이순신 학생은 화학1을 등록한다 (등록기록2)
    	
    	private int enrollmentId;
    	private Student student;
    	private Course course;
    	
    	// 데이터 베이스는 영구적으로 보관하고 싶을때 쓴다.
    	// 데이터베이스에 저장되면 어떻게 저장되는지 생각해보면 좋다.
    	
    	public Enrollment(int enrollmentId, Student student, Course course) {
    		this.enrollmentId = enrollmentId;
    		this.student = student;
    		this.course = course;
    	}
    
    	public int getEnrollmentId() {
    		return enrollmentId;
    	}
    
    	public void setEnrollmentId(int enrollmentId) {
    		this.enrollmentId = enrollmentId;
    	}
    
    	public Student getStudent() {
    		return student;
    	}
    
    	public void setStudent(Student student) {
    		this.student = student;
    	}
    
    	public Course getCourse() {
    		return course;
    	}
    
    	public void setCourse(Course course) {
    		this.course = course;
    	}
    	
    }
    package ch06;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Student {
    
    	private int studentId;
    	private String name;
    	private String email;
    	// tip - 자료구조 배열은 가능한 멤버 변수 선언과 동시에 초기화 해보자.
    	private List<Enrollment> enrollments = new ArrayList<>();
    
    	public Student(int studentId, String name, String eamil) {
    		this.studentId = studentId;
    		this.name = name;
    		this.email = eamil;
    	}
    
    	public int getStudentId() {
    		return studentId;
    	}
    
    	public void setStudentId(int studentId) {
    		this.studentId = studentId;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getEmail() {
    		return email;
    	}
    
    	public void setEmail(String email) {
    		this.email = email;
    	}
    
    	public List<Enrollment> getEnrollments() {
    		return enrollments;
    	}
    
    	public void setEnrollments(List<Enrollment> enrollments) {
    		this.enrollments = enrollments;
    	}
    	
    	//등록 기능 추가
    	public void addEnrollment(Enrollment enrollment) {
    		enrollments.add(enrollment);
    	}
    
    }
    package ch06;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Main {
    
    	public static void main(String[] args) {
    		
    		//학생 생성
    		Student student1 = new Student(1,"Alice","alice@example.com" );
    		Student student2 = new Student(1,"Bob","bob@example.com" );
    		
    		//과정 생성
    		Course course1 = new Course(1, "수학", "introduction to Mathematics");
    		Course course2 = new Course(1, "영어", "introduction to English");
    				
    		// 1번 학생이 Math 과정을 등록한다
    		Enrollment enrollment1 = new Enrollment(1, student1, course1);
    		Enrollment enrollment2 = new Enrollment(2, student2, course2);
    		Enrollment enrollment3 = new Enrollment(1, student1, course2);
    		
    		// 학생의 데이터에 내가 등록한 정보를 저장시킬수 있다.
    //		ArrayList<Enrollment> list = new ArrayList<>();
    //		list.add(enrollment1);
    //		student1.setEnrollments(enrollment1);
    		// 통으로 List 를 저장하는 녀석
    		student1.addEnrollment(enrollment1); // 0 번째 인덱스
    		student1.addEnrollment(enrollment3);	// 1번째 자료구조 저장
    		
    		student2.addEnrollment(enrollment2); // 2번째 밥 등록신청 정보 저장
    		
    		//문제1
    		// 밥이 신청한 과정에 이름을 화면에 출력하시오.
    		//문제 해결 방안 - 요청 사항 : 학생으로 접근
    		//ArrayList<Enrollments> a;
    		//a.curse
    		System.out.println(student2.getEnrollments().get(0).getCourse().getName());
    		//student2.getEnrollments().get(0).getCourse().getName(); 	//enrollment2
    		
    		//문제2
    		//엘리스가 신청한 과정에 이름을 화면에 출력하시오.
    		//문제 해결 방안 - 요청 사항 : 학생으로 접근
    		//점을 연관해서 생각하자 (계속 안에 들어간다)
    		System.out.println("-----------------------");
    		for (int i = 0; i < student1.getEnrollments().size(); i++) {
    			String studentName = student1.getName();
    			Course course = student1.getEnrollments().get(i).getCourse();
    			String courseName = course.getName();
    			System.out.println(studentName + ",courseName : " + courseName);
    		}
    		//위 코드는 학생과 과목을 Enrollment 클래스를 통해서 연결하는 예제 코드이다.
    	
    		//문제3
    		//Enrollment 1 학생 정보와 과목 정보를 반복문을 통해서 출력해주세요.
    		//학생이름 : 이름
    		// 수강 과목 : 과목이름
    		// --------------------
    		System.out.println("---------------------");
    		System.out.println("학생이름 : " + enrollment1.getStudent().getName());
    		System.out.println("수강과목 이름 : " + enrollment1.getCourse().getName());
    		System.out.println("------------------");
    		//문제 4
    		//ArrayList 를 생성해서 Enrollment 저장해주세요.
    		ArrayList<Enrollment> items = new ArrayList<>();
    		items.add(enrollment1);
    		items.add(enrollment2);
    		items.add(enrollment3);
    		for (Enrollment e : items) {
    			System.out.println(e.getStudent().getName());
    			System.out.println(e.getCourse().getName());
    			System.out.println("---------------");
    			
    		}
    		// foreach Alice에 수강하고 있는 과목 이름을 다시 한번더 출력 하시오.
    		for (Enrollment e : student1.getEnrollments()) {
    			System.out.println(enrollment1.getCourse().getName());
    		}
    	} //end of main
    	
    	
    	
    }	//end of class
    출력값
    
    영어
    -----------------------
    Alice,courseName : 수학
    Alice,courseName : 영어
    ---------------------
    학생이름 : Alice
    수강과목 이름 : 수학
    ------------------
    Alice
    수학
    ---------------
    Bob
    영어
    ---------------
    Alice
    영어
    ---------------
    수학
    수학
    Enrollment는 제너릭을 통해 배열을 만들어 값을 저장하였고 main에서 생성자를 만들어 값을 넣어주었고 그 값들을 출력하는 방법에 대해서 배웠다. .을 활용하여 경로를 잘 파악하고 for문을 새롭게 사용하는 방법에 대해서 기억하자.

    'Java' 카테고리의 다른 글

    버퍼 스트림  (0) 2023.03.14
    자바의 I/O 스트림  (0) 2023.03.02
    자료구조  (0) 2023.02.21
    쓰레드(Thread)  (0) 2023.02.19
    제네릭  (0) 2023.02.19
Designed by Tistory.