1 / 21

Java Presentation 5

Java Presentation 5. 메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve. destiny738.tistory.com Kim Jinsik. 목 차. 메소드 & 클래스 개념 (Conception of Method & Class) 객체지향 프로그래밍 (Object oriented programming(OOP)) 메소드 , 클래스 , 변수를 설정하는 법 (How to define classes, methods, variables)

Download Presentation

Java Presentation 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Presentation 5 메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve destiny738.tistory.com Kim Jinsik

  2. 목 차 • 메소드& 클래스 개념 (Conception of Method & Class) • 객체지향 프로그래밍(Object oriented programming(OOP)) • 메소드, 클래스, 변수를 설정하는 법(How to define classes, methods, variables) • 문제풀이 (Problem Solve)

  3. 메소드& 클래스 • 메소드(Method) • 클래스가 하는 일/ 동작 • C언어의 함수와 비슷한 역할을 한다. • 클래스의 특징을 나타낼 수 있는 행동이다. • 동작/행동을 나타내기 때문에 동사 형태로 나타난다. • 클래스 (Class) • 유사한 특징을 지닌 객체를 묶어서 그룹 지은 것 • 클래스에 속하는 실례를 클래스 인스턴스(Class Instance)라고 한다. • 생성한 클래스는 인스턴스화를 통해 객체로 생성된다. 일반화 인스턴스 인스턴스 영희 은영 영희 <class> 사람 <class> 사람 일반화 인스턴스 인스턴스 철수 지우 철수

  4. 메소드& 클래스 • 생성자(Constructor) • 클래스 명과 동일한 이름을 사용하며, 리턴 타입이 없는 함수 • 객체를 만들어 메모리에 할당하는 함수 • 객체를 만들 때 객체의 변수를 초기화 하는 역할을 한다. • 객체가 생성될 때 꼭 해줘야 하는 일을 정의 • 오버로드 (Overload) • 중복 메소드 • 동일한 메소드 명이 2개이상 존재 가능 • 파라미터의 수, 파라미터의자료형에 따라 자동적으로 선택 실행 • 함수의 내부가 달라도 된다. • 생성자에서 주로 사용된다. intsum_int(int a, int b){ return a+b; } float sum_float(float a, float b){ return a+b; } int sum(int a, int b) return a+b; } double sum(double a, double b){ return a+b; } <<main>> int result1; double result2; result 1 = sum(3,5); result 2 = sum(3,4.6);

  5. 객체지향 프로그래밍 • 배경 • 대규모 프로젝트 진행의 증가 • 시스템을 작은 서브 시스템으로 나눠서 개발 • 상대방의 소스 작성과 연관 없이 자신의 기능 개발 • 모듈 재사용에 대한 관심 증가 • 결합도가 낮고, 응집도가 높은 모듈의 제작 • 결합도 • 모듈과 모듈 사이의 상호 작용 정도 • 응집도 • 한 모듈 안의 기능들의 연관성 정도 A C X C D Z B Y C C C A A B B D D X Y

  6. 객체지향 프로그래밍 • 캡슐화 & 정보 은닉 (Encapsulation & Information Hiding) • 다른 사람은 내가 만든 모듈이 어떻게 돌아가는지 모른다. • 또는, 악의적인 사용을 위해 변수를 바꿀 수 있다. • 자신이 만든 시스템을 원할 하게 동작하기 위해서 외부로의 접근을 제어 • public, private, protected 등의 키워드를 사용 • getter와 setter method를 제공하여 최소한의 변수 접근은 허용 몇몇 안드로이드 게임은 루틴을 하여 변수 변경이 가능 • Overriding, Polymorphism내용은 추후에 다룬다.

  7. 메소드/클래스/변수를 설정하는 법 Step 1 문제의 명사와 동사를 구분한다. • 메소드, 클래스, 변수를 설정하는 법 Step 2 관련된 명사끼리 그룹을 나눈다. Step 3 명사가 책임지고 하는 것이 있는지 확인한다. e t c ~에게, ~에 등은 대상을 나타내는 것으로 통신관계를 나타낸다. • 문제 - 사용자는 기상청에 현재 기상정보를 요청한다. - 기상청은 온도를 측정하고, 습도 정보를 종합하여 사용자에게 알려준다.

  8. 메소드/클래스/변수를 설정하는 법 • 문제 - 사용자는 기상청에 현재 기상정보를 요청한다. - 기상청은 온도를 측정하고, 습도 정보를 종합하여 사용자에게 알려준다. Step 1 문제의 명사와 동사를 구분한다. <명사> 사용자 기상청 기상정보 온도 습도정보 <동사> 요청한다 측정한다 종합한다 알려준다

  9. 메소드/클래스/변수를 설정하는 법 Step 2 • 문제 - 사용자는 기상청에 현재 기상정보를 요청한다. - 기상청은 온도를 측정하고, 습도 정보를 종합하여 사용자에게 알려준다. 관련된 명사끼리 그룹을 나눈다. (명사가 서로 소유하고 있다고 생각하는 것으로 나눈다) <명사1> 사용자 기상정보 <명사2> 기상청 온도 습도정보 <동사> 요청한다 측정한다 종합한다 알려준다

  10. 메소드/클래스/변수를 설정하는 법 Step 3 • 문제 - 사용자는 기상청에 현재 기상정보를 요청한다. - 기상청은 온도를 측정하고, 습도 정보를 종합하여 사용자에게 알려준다. 명사가 책임지고 하는 것이 있는지 확인한다. 명사가 하는 행위(동사)가 있는지 확인한다. 하는 행위가 있는 것은 클래스가 될 가능성이 있다. 클래스가 되지 않는 명사는 변수가 된다. <동사> 요청한다 <동사> 측정한다 종합한다 알려준다 <명사1> 사용자 기상정보 <명사2> 기상청 온도 습도정보

  11. 메소드/클래스/변수를 설정하는 법 <동사> 요청한다 <동사> 측정한다 종합한다 알려준다 <명사1> 사용자 기상정보 <명사2> 기상청 온도 습도정보 기상청 사용자 온도 습도정보 기상 정보 요청하다 측정한다 종합한다 알려준다

  12. 문제 풀이 1.사람의 성명을 모델하는Name 클래스를 설계하고 작성하라 그 클래스는 사람의 성과 이름을 나타내고 다음 메소드들을 가진다: l  사람의 성과 이름을 넘겨 받아 초기화하는 생성자메소드l  성을 반환하는 메소드l  이름을 반환하는 메소드l  성과 이름 안에 포함된 문자들의 총 수를 되돌려 주는 메소드 2.문제1에서 작성한 클래스를 시험하는 드라이버(Driver)클래스를 설계한 후 작성하라. 사용자로부터 두 명의 성명(성과 이름)들을 읽어 들인 후 각 성명에 대해 Name 객체를 만들고 각 성명에 대해 성과 이름을 출력하고 이름의 길이를 출력하는 프로그램을 작성하라:

  13. 문제 풀이 1.사람의 성명을 모델하는Name 클래스를 설계하고 작성하라 그 클래스는 사람의 성과 이름을 나타내고 다음 메소드들을 가진다: l  사람의 성과 이름을 넘겨 받아 초기화하는 생성자메소드l  성을 반환하는 메소드l  이름을 반환하는 메소드l  성과 이름 안에 포함된 문자들의 총 수를 되돌려 주는 메소드 클래스 이름 : Name 클래스 변수 - String FamilyName : 사람의 성을 저장한다. - String GivenName : 사람의 이름을 저장한다.

  14. 문제 풀이 l  사람의 성과 이름을 넘겨 받아 초기화하는 생성자메소드 > Name(String fName, gName)l  성을 반환하는 메소드 > String getterFamilyName()l  이름을 반환하는 메소드 > String getterGivenName()l  성과 이름 안에 포함된 문자들의 총 수를 되돌려 주는 메소드 > intnameLength() 메소드1 - 이름 : Name - 변수 ~ fName : 사용자로부터 받은 성 ~ gName : 사용자로부터 받은 이름 - 알고리즘 ~ 설명 : 사용자로부터 받은 값을 이용하여 객체 생성시 데이터를 초기화 한다. 1. familyName = fName 2. givenName = gName

  15. 문제 풀이 l  사람의 성과 이름을 넘겨 받아 초기화하는 생성자메소드 > Name(String fName, gName)l  성을 반환하는 메소드 > String getterFamilyName()l  이름을 반환하는 메소드 > String getterGivenName()l  성과 이름 안에 포함된 문자들의 총 수를 되돌려 주는 메소드 > intnameLength() 메소드2 - 이름 : getterFamilyName - 반환 타입 : String - 알고리즘 ~ 설명 : 객체에 저장된 familyName값을 사용자에게 알려준다. 1. familyName값 반환

  16. 문제 풀이 l  사람의 성과 이름을 넘겨 받아 초기화하는 생성자메소드 > Name(String fName, gName)l  성을 반환하는 메소드 > String getterFamilyName()l  이름을 반환하는 메소드 > String getterGivenName()l  성과 이름 안에 포함된 문자들의 총 수를 되돌려 주는 메소드 > intnameLength() 메소드3 - 이름 : getterGivenName - 반환 타입 : String - 알고리즘 ~ 설명 : 객체에 저장된 givenName값을 사용자에게 알려준다. 1. givenName값 반환

  17. 문제 풀이 l  사람의 성과 이름을 넘겨 받아 초기화하는 생성자메소드 > Name(String fName, gName)l  성을 반환하는 메소드 > String getterFamilyName()l  이름을 반환하는 메소드 > String getterGivenName()l  성과 이름 안에 포함된 문자들의 총 수를 되돌려 주는 메소드 > intnameLength() 메소드4 - 이름 : nameLength - 반환 타입 : int - 알고리즘 ~ 설명 : string함수 length()를 이용하여 성과 이름의 길이를 구하여 반환한다. 1. “familyName.length() + givenName.length()” 값을 반환한다.

  18. 문제 풀이 • 소스코드 class Name{ String familyName; String givenName; Name(String fName, String gName){ // 생성자 familyName = fName; givenName = gName; } public String gatterFamilyName(){ // 이름의 성 반환 return familyName; } public String gatterGivenName(){ // 이름의 이름 반환 return givenName; } public intnameLength(){ // 이름의 길이 반환 return familyName.length() + givenName.length(); } }

  19. 문제 풀이 2. 문제 1에서 작성한 클래스를 시험하는 드라이버(Driver) 클래스를 설계한 후 작성하라. 사용자로부터 두 명의 성명(성과 이름)들을 읽어 들인 후 각 성명에 대해 Name 객체를 만들고 각 성명에 대해 성과 이름을 출력하고 이름의 길이를 출력하는 프로그램을 작성하라: • 참고 : 시험하는 클래스는 main method에 모든 것을 구현하면 된다. 클래스 이름 : Driver 메소드1 - 이름 : main - 변수 ~ String familyName1, givenName1 : 사용자에게 사람1의 성명을 받아 저장하는 변수 ~ String familyName2, givenName2 : 사용자에게 사람2의 성명을 받아 저장하는 변수 ~ name1 : 사람 1의 이름 객체 ~ name2 : 사람 2의 이름 객체

  20. 문제 풀이 2. 문제 1에서 작성한 클래스를 시험하는 드라이버(Driver) 클래스를 설계한 후 작성하라. 사용자로부터 두 명의 성명(성과 이름)들을 읽어 들인 후 각 성명에 대해 Name 객체를 만들고 각 성명에 대해 성과 이름을 출력하고 이름의 길이를 출력하는 프로그램을 작성하라: • 참고 : 시험하는 클래스는 main method에 모든 것을 구현하면 된다. 메소드1 - 알고리즘 <input> familyName1, givenName1, familyName2, givenName2 start <output> n1.getFamilyName() + n1.getGivenName + “길이 : ”+ n1.NameLength() <output> n2.getFamilyName() + n2.getGivenName + “길이 : ”+ n2.NameLength() < 객체 생성 > Name n1 = new Name (familyName1, givenName1) Name n2 = new Name (familyName1, givenName1) end

  21. Q & A 메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve destiny738.tistory.com Kim Jinsik

More Related