[자바] java 객체지향기초
01. 객체와 객체 지향 프로그래밍
객체 (Object)
의사나 행위가 미치는 대상 ( 사전적 의미 )
구체적, 추상적 데이터의 단위 ( 학생, 회원, 생산, 주문, 배송 )
객체 지향 프로그램과 절차 지향 프로그래밍
아침에 일어나 학교를 가는 과정을 예를 들어 봅시다.
절차 지향 프로그래밍
-시간이나 사건의 흐름에 따른 프로그래밍
일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다-> 요금을 지불한다 -> 학교에 도착
객체 지향 프로그래밍
객체 지향 프로그램은 어떻게 구현하는가?
객체를 정의 하고
각 객체 제공하는 기능들을 구현하고
각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 협력을 구현
02. 생활 속에서 객체 찾아 클래스로 구현해 보기
객체를 찾아 봅시다
온라인 쇼핑몰에 회원 로그인을 하고 여러 판매자가 판매하고 있는 제품 중 하나를 골라 주문을 한다
아침에 회사에 가는 길에 별다방 커피숍에 들려 아이스 카페라떼를 주문했다
성적확인을 위해 학사 관리 시스템에 로그인 하여 수강 한 과목들의 성적을 확인했다
클래스는 객체의 청사진(blueprint) 입니다
객체의 속성은 클래스의 멤머 변수(member variable)로 선언 함
- 학생 클래스
public class Student { int studentNumber; String studentName; int majorCode; String majorName; int grade; }
- 주문 클래스
public class Order { int orderId; String buyerId; String sellerId; int productId; String orderDate; }
- 회원 클래스
public class UserInfo { String userId; String userPassWord; String userName; String userAddress; int phoneNumber; }
객체 지향 프로그램을 할 때는
객체를 정의 하고
각 객체의 속성을 멤버 변수로 역할을 메서드로 구현하고
각 객체간의 협력을 구현합니다.
클래스 코딩하기
클래스는 대문자로 시작하는것이 좋음
java 파일 하나에 클래스는 여러 개가 있을 수 있지만, public 클래스는 하나이고, public 클래스와 .java 파일의 이름은 동일함
camel notation 방식으로 명명
03. 함수와 메서드
함수란 (function)
하나의 기능을 수행하는 일련의 코드
구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨
함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음
함수 정의하기
함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨
int add(int num1, int num2) {
int result;
result = num1 + num2;
return result;
}
함수 구현하기 예제
public class FunctionTest {
public static int addNum(int num1, int num2) {
int result;
result = num1 + num2;
return result;
}
public static void sayHello(String greeting) {
System.out.println(greeting);
}
public static int calcSum() {
int sum = 0;
int i;
for(i = 0; i<=100; i++) {
sum += i;
}
return sum;
}
public static void main(String[] args) {
int n1 = 10;
int n2 = 20;
int total = addNum(n1, n2);
sayHello("안녕하세요");
int num = calcSum();
System.out.println(total);
System.out.println(num);
}
}
함수 호출과 스택 메모리
스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리
함수의 수행이 끝나면 자동으로 반환 되는 메모리
메서드 (method)
객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
멤버 함수 (member function)이라고도 함
메서드를 구현함으로써 객체의 기능이 구현 됨
메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는것이 좋음
예) getStudentName()
04. 객체의 속성은 멤버 변수로, 객체의 기능은 메서드로 구현한다
학생 클래스를 정의 하고 이를 사용해 보자
- 학생 클래스의 속성을 멤버 변수로 선언하고 메서드를 구현한다
public class Student {
public int studentID;
public String studentName;
public String address;
public void showStudentInfo() {
System.out.println(studentName + "," + address);
}
public String getStudentName() {
return studentName;
}
}
- 학생 클래스를 생성하여 생성된 객체(인스턴스)에 각각 다른 이름과 주소를 대입한다
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();
studentLee.studentName = "이순신";
studentLee.address = "서울";
studentLee.showStudentInfo();
Student studentKim = new Student();
studentKim.studentName = "김유신";
studentKim.address = "경주";
studentKim.showStudentInfo();
System.out.println(studentLee);
System.out.println(studentKim);
}
}