OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab destiny738.tistory.com
목차 캡슐화(Encapsulation) 계산기 만들기 키워드 : static 연습문제 풀이
Encapsulation 캡슐화에 따른 이익! 1. 캡슐화 캡슐처럼 안쪽의 내용물(데이터, 속성)이 뭔지 모르게 숨긴다. 가루약 싫어서 나 먹지? 내 안에 뭐 있는지 알고 먹어? Encapsulation 캡슐처럼 안쪽의 내용물(데이터, 속성)이 뭔지 모르게 숨긴다. 적당한 메소드를 통해서 외부와 통신을 한다. 캡슐화에 따른 이익! Modularity(모듈화) 클래스 하나가 하나의 모듈이 된다. 모듈 : 하나의 부품 ( ex. 나사 ) Information-hiding(정보은닉) 정해진 메소드를 제외하고는 객체와 통신이 불가능하다. 외부에서는 어떻게 객체가 움직이는지 알 수 없다. Code re-use(코드 재사용) 모듈화에 따른 부수적인 장점
Object structure 1. 추가 설명 <class variable> 객체가 생성되면 객체의 모든 함수에서 사용가능 한 변수 class Name{ String firstName; String lastName; Name(String fName, String lName){ firstName = fName; lastName = lName; } public String returnName(){ return fristName + “,” + lastName; <Method> 객체가 생성되면 외부와 통신이 가능하게 한다. <생성자> 객체가 생성될 때 호출 객체가 생성될 때 해야 할 일을 정의 클래스 변수를 초기화
다음의 문제를 프로그래밍하라 2. 계산기 만들기 간단한 계산기를 만들어 보자! C언어 때 배웠던 계산기를 클래스로 만들어 봅시다. 계산기는 정수형 연산과 실수형 연산이 가능하다. 계산기의 기능으로는 덧셈만 존재한다. main method에서 3과 4를 더하는 연산 3.3과 4.4를 더하는 연산 을 수행하여 각각의 결과를 출력하라!
Overload : 같은 이름으로 여러 동작!! 2. 계산기 만들기 class Calculation{ int sumInt(int a, int b){ return a+b; } double sumDouble(double a, double b){ public static void main(String []args){ Calculation c = new Calculation(); System.out.println(sumInt(3,4)); System.out.println(sumDouble(3.3,4.4);
Overload : 같은 이름으로 여러 동작!! 2. 계산기 만들기 class Calculation{ int sum (int a, int b){ return a+b; } double sum (double a, double b){ public static void main(String []args){ Calculation c = new Calculation(); System.out.println(sum (3,4)); System.out.println(sum (3.3,4.4); 난 생성자에서 유용하게 사용되지
Overload 2. 계산기 만들기 코더 사장 <프로그램 확장> 회사가 너무 잘나가서… 외국인도 사용하게 되어 이름 관리시 middle Name도 필요하게 되었다! class Name{ String firstName; String middleName; String lastName; Name(String fName, String mName, String lName){ firstName = fName; middleName = mName; lastName = lName; } public String returnName(){ … 한국인 무시함? 한국인도 중간이름 만들어? 도와줘 Overload!! 코더 사장
Overload 2. 계산기 만들기 코더 사장 class Name{ String firstName; String middleName; String lastName; Name(String fName, String mName, String lName){ firstName = fName; middleName = mName; lastName = lName; } Name(String fName, String lName){ middleName = “”; …. 코더 사장
Keyword static 3. Static C언어에서의 Static keyword? void printcount(){ int i = 0; i++; printf(“%d”,i); } int main(){ printcount(); void printcount(){ static int i = 0; i++; printf(“%d”,i); } int main(){ printcount(); 함수의 특정 값이 지속적으로 메모리에 유지시킨다.
Keyword static 3. Static Class에서의 Static은 Class에서 생성된 모든 객체가 공유하게 한다. 사용자에게 값을 받기 위해서는 Scanner객체를 생성해서 사용했다. 하지만, System.out.println은 어째서 객체 생성 없이 사용이 가능할까? Scanner s = new Scanner(System.in); int number = s.nextInt(); System.out.println(number); 여러분이 안 궁금하셨을지도 모르겠지만... 이를 설명해드리기 위해서 static을 설명했습니다. String name = “kimjinsik”;
Static 응용 3. Static i가 의미하는 것은? class Name{ String firstName; String lastName; static int i = 0; Name(String fName, String mName, String lName) { firstName = fName; lastName = lName; i++; } public String returnName() { return fristName + “,” + lastName; …
문제 4. 연습문제 풀이 학생을 나타내는 Student라는 클래스를 설계하고 구현하라. 학생은 학번, 이름과 세 개의 시험점수들을 가진다. 학생의 학번, 이름, 세 개의 시험점수들을 넘겨 받아 대응하는 변수의 값을 정하는 Student 객체를 생성하는 생성자 메소드를 작성하라. 시험 번호(1부터 3사이의 정수)와 그 번호에 대응하는 시험 점수를 매개변수로 받아 해당 변수의 값을 변경하는 메소드를 작성하라. 시험 번호를 매개변수로 받아 그 번호에 대응하는 시험점수를 반환하는 메소드를 작성하라. 세 개의 시험 점수들의 평균을 구하여 반환하는 메소드를 작성하라. 학생의 학번, 이름, 시험 점수들과 시험 평균 점수를 문자열의 형태로 반환하는 메소드를 작성하라.
문제 4. 연습문제 풀이 학생을 나타내는 Student라는 클래스를 설계하고 구현하라. <클래스 이름과 변수> 학생을 나타내는 Student라는 클래스를 설계하고 구현하라. 학생은 학번, 이름과 세 개의 시험점수들을 가진다. 학생의 학번, 이름, 세 개의 시험점수들을 넘겨 받아 대응하는 변수의 값을 정하는 Student 객체를 생성하는 생성자 메소드를 작성하라. 시험 번호(1부터 3사이의 정수)와 그 번호에 대응하는 시험 점수를 매개변수로 받아 해당 변수의 값을 변경하는 메소드를 작성하라. 시험 번호를 매개변수로 받아 그 번호에 대응하는 시험점수를 반환하는 메소드를 작성하라. 세 개의 시험 점수들의 평균을 구하여 반환하는 메소드를 작성하라. 학생의 학번, 이름, 시험 점수들과 시험 평균 점수를 문자열의 형태로 반환하는 메소드를 작성하라. <생성자 메소드> <Set 메소드> <Get 메소드> <평균계산 메소드> <toString 메소드>
감사합니다!