검색결과 리스트
글
OOP: 객체지향 프로그래밍(Object Oriented Programming)
- 우리 일상에서이루어지고있는 업무를 객체(Object)를 사용해서 프로그래밍하는방법
- ex)
* 1. 실제 주차장관리 업무파악
* (객체를 도출하고 그객체들의 관계에의한 업무파악)
* 2. 프로그램으로 작성
* (1번에서 파악된업무를 메모리상에서 그대로구현)
*
* ex> 주차관리 프로그램
*
*
* - 객체(업무):실제이루어지고있는 업무(주차장)에서 보여지고구체화되어있는 사물(차)
*
* - 객체(프로그램):실제이루어지고있는 업무(주차장)에서 보여지고
* 구체화되어있는 사물을 메모리의 데이타로
* 표현한것(차의데이타)
OOP 의 원칙
1. 캡슐화
2. 상속성
3. 다형성(오버로딩,오바라이딩,객체형변환)
//------ Car.java ------
/*TIP: * class 선언 * - 형식 * 접근제한자 class 클래스이름{ * - 접근제한자:public,protected,없는거 * * } * ex> public class Car{ * } * * -구성요소 * 1.멤버변수선언(속성) * 접근제한자(public,proected,없는거,private) 타입 indentifier; * ex> public String carName; * * 2.멤버메쏘드 선언(행위) * 접근제한자 리턴타입 메쏘드이름(인자){ * -인자: 나를 호출한놈이 데이타를 넣어줄 통로 * -리턴타입: 나를 호출한놈에게 줄 데이타타입 * void --> 줄데이타가 없는경우 * } * ex> public int test(int a){ * * } */ /** * * 이 클래스는 Car 클래스이다. * 차 번호와 입차, 출차시간, 요금을 받는다. * @author : SUIN * @version: ver0.1 * */ public class Car { /** * 차량의 번호 */ public String no ; public int inTime; public int outTime; /** 요금저장 */ public int fee; }
//------ CarMain.java ------
public class CarMain { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //1. 차가 들어온다. (입차) //변수선언 : 타입 식별자 -> Car 타입 //차 클래스 사용해서 차 객체 생성 후 Car 변수 초기화 //*Car 타입의 기억장소 c1이라는 식별자 할당, //*Car 클래스(틀)을 활용해서 객체 생성 Car c1 = new Car(); //차 객체 찍기 //차 객체 안의 멤버변수 초기화 c1.no ="1234"; c1.inTime = 12; c1.outTime = 0; c1.fee = c1.outTime - c1.inTime; //시간이 흐른 후 (2hr) //2. 요금계산 c1.outTime = 14; c1.fee = (c1.outTime - c1.inTime)*1000; //3. 출력 System.out.println("****************"); System.out.println("차량번호: "+c1.no +"\n입차시간: "+c1.inTime +"\n출차시간: "+c1.outTime +"\n주차요금: "+c1.fee+"원"); System.out.println("****************"); /*****************************************/ //String str; Car c2 = new Car(); c2.no ="4962"; c2.inTime = 14; c2.outTime = 0; c2.fee = 0; c2.outTime = 17; c2.fee = (c2.outTime - c2.inTime)*1000; System.out.println("****************"); System.out.println("차량번호: "+c2.no +"\n입차시간: "+c2.inTime +"\n출차시간: "+c2.outTime +"\n주차요금: "+c2.fee+"원"); System.out.println("****************"); } }
//------ CarMethod.java ------
/* class 선언 * - 형식 * 접근제한자 class 클래스이름{ * - 접근제한자:public,protected,없는거 * * } * ex> public class Car{ * } * * -구성요소 * 1.멤버변수선언(속성) * 접근제한자(public,proected,없는거,private) 타입 indentifier; * ex> public String carName; * * 2.멤버메쏘드 선언(행위) * 접근제한자 리턴타입 메쏘드이름(인자){ * -인자: 나를 호출한놈(클래스,객체)이 데이타를 넣어줄 통로 * -리턴타입: 나를 호출한놈에게 줄 데이타타입 * void --> 줄데이타가 없는경우 * } * ex> public int test(int a){ * * } */ /** * @author : SUIN * @since 201302 * */ public class CarMethod { /** * 차량의 번호 : String 형태 */ public String no ; /** * 입차시간 */ public int inTime; public int outTime; public int fee; public static int moneyPerHour = 1000; /* * 기능 (메서드) * 1. 요금을 계산하다 * 2. 출력하다 */ //요금 계산 /** * 요금 계산 메소드 */ public void calculateFee() { this.fee = (this.outTime - this.inTime)*moneyPerHour; //같은 클래스 안에서는 자기자신의 레퍼런스이므로 this. 해주면 됨. //안해줘도 default 로 생략가능.(처음엔 생략하지 말 것) // this = 셀프참조변수 } //출력 /** * 차량의 주차정보 출력 메소드 */ public void print(){ System.out.println("****************"); System.out.println("차량번호: "+this.no +"\n입차시간: "+inTime +"\n출차시간: "+outTime +"\n주차요금: "+fee+"원"); System.out.println("****************"); } //초기화 /** * 차량의 데이터를 SET * * @param no :차량 번호 입력 * @param inTime :입차시간 * @param outTime :출차시간 * @param fee :주차요금 * */ public void setData(String no, int inTime, int outTime, int fee){ this.setNo(no); this.setInTime(inTime); this.setOutTime(outTime); this.setFee(fee); } /* * 멤버필드 데이터 메소드(set, get) * 1. setter method * 2. getter method */ //setter method public void setNo (String no){ //검정은 로컬변수 this.no = no; //파랑은 멤버(전역)변수 // } public void setInTime(int inTime){ this.inTime = inTime; } public void setOutTime(int outTime){ this.outTime = outTime; } public void setFee(int fee) { this.fee = fee; } //getter method /** * 차량 번호를 반환하는 메소드 * @return */ public String getNo (){ //get : 다른 클래스(사용자) 입장에서 get return this.no; } public int getInTime (){ return this.inTime; } public int getOutTime() { return outTime; } public int getFee() { return fee; } //Source - Generate getter and setter -> 자동으로 만들어줌. 대박! }
//------ CarMethodMain.java ------
public class CarMethodMain { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //1. 차가 들어온다. (입차) //변수선언 : 타입 식별자 -> Car 타입 //차 클래스 사용해서 차 객체 생성 후 Car 변수 초기화 //*Car 타입의 기억장소 c1이라는 식별자 할당, //*Car 클래스(틀)을 활용해서 객체 생성 CarMethod c1 = new CarMethod(); //차 객체 찍기 //차 객체 안의 멤버변수 초기화 c1.no ="3456"; c1.inTime = 12; c1.outTime = 0; c1.fee = 0; //시간이 흐른 후 (2hr) c1.outTime = 14; //2. 요금계산 c1.outTime = 14; c1.fee = (c1.outTime - c1.inTime)*1000; //3. 출력 System.out.println("****************"); System.out.println("차량번호: "+c1.no +"\n입차시간: "+c1.inTime +"\n출차시간: "+c1.outTime +"\n주차요금: "+c1.fee+"원"); System.out.println("****************"); /******************클래스에 메소드추가***************************/ CarMethod c2 = new CarMethod(); //번지수 입력, this = c2의 주소 c2.no ="1212"; c2.inTime = 13; c2.outTime = 0; c2.fee = 0; c2.outTime = 17; c2.calculateFee(); //요금 계산 함수 c2.print(); //요금 출력 -> 우와 편해졌다! /********************getter,setter*************************/ CarMethod c3 = new CarMethod(); //데이터에 관련된 메소드. setter method, getter method //1. 입차 c3.setData("1234", 16, 0, 0); //2. 시간이 흐른 후 c3.setOutTime(17); c3.calculateFee(); //3. 출력 c3.print(); //*.번호 알아보기 String no = c3.getNo(); System.out.println("no="+no); /* * Car 클래스를 사용하는 사용자에게 * Car 클래스의 멤버에 대해 설명하지 않아도 됨. * 메소드만 설명하면 되고, 사용자가 멤버변수를 몰라도 됨. * * => 다른 클래스, 객체의 멤버변수 접근을 막는다. */ //시간당 요금 출력 System.out.println("시간당 요금: "+CarMethod.moneyPerHour); } }
//------ MemberField.java ------
public class MemberField { //선언과 동시에 초기화 가능 /* * 객체 생성 후 멤버변수의 초기 기본값 * * 참조변수 (클래스변수, 객체변수) : null * integer : 0 * boolean : false * double :0.0 * */ public String member1 = "멤버변수연습"; public int member2 = 130222; public char member3 ; public boolean member4 ; public float member5 ; }
//------ MemberFieldMain.java ------
public class MemberFieldMain { public static void main(String[] args) { /*선언*/ MemberField mf; //MemberField.class가 존재해야 레퍼런스 변수 선언 가능 //선언하면 멤버필드 템플릿이 메모리 위로 올라옴. //mf = MemberField 객체의 주소값을 가짐 /*초기화*/ mf = new MemberField(); // 보통 선언과 동시에 초기화 MemberField mf = new MemberField(); /* * << 멤버(객체)변수 접근 방법 >> * * - 참조변수.멤버변수의 식별자 * * ex> Student st = new Student(); * st.no = 1234; * */ mf.member1 ="문자열"; mf.member3='c'; mf.member5=3.14159f; System.out.println(mf.member1); System.out.println(mf.member2); System.out.println(mf.member3); System.out.println(mf.member4); System.out.println(mf.member5); //tip: Ctrl+마우스 왼클릭 = 해당 변수가 정의 된 곳으로 이동 //tip: Ctrl+Alt+↓,↑ = 해당 드래그 된 내용 복사 붙여넣기 } }
//------ MemberMethod.java ------
/* * -구성요소 * 1.멤버변수선언(속성) * 접근제한자(public,protected,없는거,private) 타입 indentifier; * ex> public String carName; * * 2.멤버메쏘드 선언(행위) * 접근제한자 리턴타입 메쏘드이름(인자){ * -인자: 나를 호출한놈이 데이타를 넣어줄 통로 * -리턴타입: 나를 호출한놈에게 줄 데이타타입 * void --> 줄데이타가 없는경우 * } * ex> public int test(int a){ * * } * * //리턴타입과 메쏘드이름 사이는 떨어지면 안된다. */ public class MemberMethod { public void method1 () { System.out.println("method1()실행"); } public void method2 (int a){ System.out.println("method2(int a)실행: "+a); } public void method3(int a, int b){ System.out.println("method3(int a, int b)실행: "+a+","+b); } public int method4 (int a){ a = a+1; System.out.print("mothod4(int a)실행: "); return a; } public int method5 (int a, int b){ int result = a+b ; System.out.print("mothod5(int a, int b)실행: "); return result; } }
//------ MemberMethodMain.java ------
public class MemberMethodMain { public static void main(String[] args) { MemberMethod mm = new MemberMethod(); /* * 멤버(객체)메쏘드에 접근하는방법 * * -형태: 참조(객체)변수.메쏘드이름(); * ex> mm.method1(); */ mm.method1(); mm.method2(3); mm.method3(1, 2); int result = mm.method4(999); System.out.println(result); /* * public int method5(int x, int y); */ result = mm.method5(34, 34457833); System.out.println(result); } }
'JAVA > 자바실습' 카테고리의 다른 글
[JAVA] OOP 다형성 - 오버로딩 (0) | 2013.06.12 |
---|---|
[JAVA] OOP Encapsulation 캡슐화 (0) | 2013.06.12 |
[JAVA] 자바기본2: For, While 문을 이용한 구구단, 별 찍기, 알파벳 출력 등 (0) | 2013.06.12 |
[JAVA] 자바기본1: 연산자, 형변환, 문자열 출력, if문, 윤년출력 (0) | 2013.06.11 |
RECENT COMMENT