[24.08.20화]슈퍼코딩w3:Java-OOP_1

Michelle Kim·2024년 8월 29일

Java문법정리

목록 보기
3/6

📚 오늘 공부한 강의

23강 : Big picture ( 자바 OOP 소개 )
24강 : 자바 메소드
25강 : 자바 클래스 소개
26-1강 : 자바 클래스와 객체
26-2강 : 자바 클래스와 객체

23강 Big picture ( 자바 OOP 소개 )

객체지향 프로그래밍(=OOP)란?
객체끼리 상호작용 하듯이 코드를 작성하는 방식

왜 객체지향 프로그래밍(=OOP)로 작성하는가?

  • 코드 재사용성
  • 유지 보수 용이성

OOP이루는 4가지 개념

  • 추상화
  • 캡슐화
  • 상속
  • 다형성

24강 : 자바 메소드

함수 정의하기
함수 : 여러 명령어의 집합, 어떤 입력값에 대해 결과값이 나오는 믹서기 역할 (코드 재사용성 높아짐)

package org.michelle.chapter_24;

public class Scores {
    public static void main(String[] args) {
        // A Class학생들 점수
        int studentAClass1 = 50;
        int studentAClass2 = 60;
        int studentAClass3 = 70;

        // B Class 학생 점수
        int studentBClass1 = 60;
        int studentBClass2 = 65;
        int studentBClass3 = 66;

        // Average
//        int sumAClass = studentAClass1 + studentAClass2 + studentAClass3;
//        double averageAClass = sumAClass / (double) 3;
        double averageAClass = calculateAverage(studentAClass1, studentAClass2, studentAClass3);

        // B class
//        int sumBClass = studentBClass1 + studentBClass2 + studentBClass3;
//        double averageBClass = sumBClass / (double) 3;
        double averageBClass = calculateAverage(studentBClass1, studentBClass2, studentBClass3);

        System.out.printf("A 학급평균 점수 %.2f, B학급 평균은 %.2f", averageAClass, averageBClass);

    }
    static double calculateAverage(int studentScore1, int studentScore2, int studentScore3) {
        int sumBClass = studentScore1 + studentScore2 + studentScore3;
            return sumBClass / (double) 3;
    }
}
package org.michelle.chapter_24;

public class MethodExamples {
    // 일반적인 입려값, 출력값도 있는 경우
    // 둘 다 하나인 경우
    static int toUnicode(char ch){
        return (int) ch;
    }

    static int sumAndMultiplyFour(int a, int b){
        return (a + b) * 4;
    }

    public static void main(String[] args) {
        char ch = 'A';
        int decode = toUnicode(ch);
        System.out.println(decode);

        int myInt1 = 10;
        int myInt2 = 5;
        int result = sumAndMultiplyFour(myInt1, myInt2);
        System.out.println(result);

        String res = sayHello();
        System.out.println(res);

        printHello("printHello");

        printHi();
    }

    // 인자값이 없을 수 있다. 출력값은 있음.
    static String sayHello(){
        return "Hello World!";
    }
    // 인자값이 있는데, 출력값은 없는것.
    static void printHello(String str){
        System.out.printf("함수 안에서 실행합니다. %s ", str);
    }

    // 인자값도 없고 , 출력값도 없는것
    static void printHi(){
        System.out.println("Hi");
    }

}

25강 : 자바 클래스 소개

클래스란? 설계도

Student.java

package org.michelle.chapter_25;

public class Student {
    //속성
    String schoolName;
    int classYear;
    int classroomNumber;
    int studentNumber;

    // 기본 정보
    String name;
    String gender;

    // 행위
    void study(Teacher teacher, String subjectName){
        String teacherName = teacher.name;
        System.out.printf("학생: 저는 %s 선생님에게 %s 과목을 배우고 있습니다.", teacherName, subjectName);
    }
}

Teacher.java

package org.michelle.chapter_25;

public class Teacher {
    // 학교 정보
    String schoolName;
    // 과목
//    String subjectName;
//    String subjectCode;
    Subject subject;
    //기본정보
    String name;
    String gender;

    void teach(Student student, String subjectName){
        String studentName = student.name;
        System.out.printf("선생: %s 학생에게 %s과목을 가르치고 있습니다.", studentName, subjectName);
    }
}

Test.java

package org.michelle.chapter_25;

public class Test {
    //
    String testName;
    String place;

    String startDate;
    String endDate;

    // 시험 과목들
//    String testSubjectName1;
//    String testSubjectCode1;
    Subject testSubject1;

//    String testSubjectName2;
//    String testSubjectCode2;
    Subject testSubject2;

//    String testSubjectName3;
//    String testSubjectCode3;
    Subject testSubject3;

}

Subject.java

package org.michelle.chapter_25;

public class Subject {
    String subjectName;
    String subjectCode;
}

26-1,2강 : 자바 클래스와 객체

Java인스턴스 만들기
{클래스형}{변수이름} = new{생성자};

클래스 생성사
실행 클래스
실습: 클래스룸 객체 만들어 보기
JAVA 디폴트 생성자 실습: 디폴트 생성자JAVA 생성자 오버로드
실습: JAVA 생성자 오버로딩JAVA 실행 클래스와 일반 클래스

package org.michelle.chapter_26;

public class InstanceTest {
    public static void main(String[] args) {
        //

        Student student1 = new Student( "School", 1, 3, 20, "Bob", "Male" );

//        student1.name = "Bob";
//        student1.gender = "Male";
//        student1.schoolName = "School";
//        student1.classYear = 1;
//        student1.classroomNumber = 3;
//        student1.studentNumber= 20;
        System.out.println(student1.name);
        System.out.println(student1.gender);
        System.out.println(student1.studentNumber);

        Student student2 = new Student();
        student2.name = "Alice";
        student2.gender = "Female";
        student2.schoolName = "School";
        student2.classYear = 1;
        student2.classroomNumber = 3;
        student2.studentNumber= 15;

        System.out.println(student2.name);
        System.out.println(student2.gender);
        System.out.println(student2.studentNumber);

        Student student3 = new Student();
        System.out.println(student3.name);

        Student student4 = new Student();

        Teacher teacher = new Teacher("Tom","Female", "korean", "AB001" );
//
//        Teacher teacher = new Teacher();
//        teacher.name = "Tom";
//        teacher.gender = "Female";
//        teacher.schoolName = "School";
//
//        // subject선행해서 만들어줌
//        Subject koreanSubject = new Subject();
//        koreanSubject.subjectName = "korean";
//        koreanSubject.subjectCode = "AB001";
//
//        teacher.subject = koreanSubject;
//
//        System.out.println(teacher.name);
//        System.out.println(teacher.gender);
//        System.out.println(teacher.subject.subjectName);


    }
}
profile
🇬🇧영국대학교)Computer Science학과 졸업 📚Data, AI, Backend 분야에 관심이 많습니다. 👉Email: kimbg9876@gmail.com

0개의 댓글