메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
데이터의 표현과 연산 (1) (Chapter 3)
C++ Espresso 제1장 기초 사항.
객체지향 프로그래밍.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
Java Presentation 중간 시험2 풀이
16강. 자바 빈 빈 이란? 빈 만들기 빈 관련 액션 태그(useBean, getProperty, setProperty)
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
8. 객체와 클래스 (기본).
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Programming.
Power Java 제4장 자바 프로그래밍 기초.
C++ 프로그래밍 2009년 2학기 전자정보공학대학 컴퓨터공학부.
C++ 프로그래밍 2007년 1학기 전자정보공학대학 컴퓨터공학부.
10장 객체-지향 프로그래밍 II ©창병모.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
명품 JAVA Essential.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
7장 클래스.
윤 홍 란 4 장 클래스 작성 윤 홍 란
2010학년도 2학기 객체지향의 이해.
Power Java 제7장 클래스와 객체.
DataScience Lab. 박사과정 김희찬 (월)
C ++ 프로그래밍 시작.
JSP와 자바 빈즈 JSP 빈즈 구조를 이해하고 활용한다. useBean 액션 활용법을 익힌다.
인터페이스(Interfaces) 강원대학교.
This, static, final 지정 예약어 자바 4대 중첩 클래스
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DataScience Lab. 박사과정 김희찬 (월)
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
소프트웨어 공학 (Software Engineering)
가상함수와 추상 클래스.
[CPA340] Algorithms and Practice Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
JA A V W. 04.
Spring DI 이해 및 활용.
7강. 객체지향 프로그램의 본질 메소드 프로그래밍의 한계 객체의 개념 및 클래스의 이해
JA V A W. 07 Sb.L.
Chapter 02. 소프트웨어와 자료구조.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
3장,4장 발표 서정우.
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
자바 5.0 프로그래밍.
제 11 장 자바빈즈를 이용한 JDBC 프로그래밍 학기 인터넷비즈니스과 강 환수 교수.
6장 클래스(상속).
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
Java 5장. 객체지향 개념 public class SumTest {
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
C.
C++ 언어의 특징
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
Presentation transcript:

메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve 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) 문제풀이 (Problem Solve) 목 차

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

문제 풀이 소스코드 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 int nameLength(){ // 이름의 길이 반환 return familyName.length() + givenName.length(); 문제 풀이

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

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

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