23강 : Big picture ( 자바 OOP 소개 )
24강 : 자바 메소드
25강 : 자바 클래스 소개
26-1강 : 자바 클래스와 객체
26-2강 : 자바 클래스와 객체
객체지향 프로그래밍(=OOP)란?
객체끼리 상호작용 하듯이 코드를 작성하는 방식


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


OOP이루는 4가지 개념

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



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");
}
}
클래스란? 설계도



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;
}
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);
}
}