반응형
1. 객체와 객체지향 프로그래밍
객체 ( Object )
- 구체적, 추상적 데이터의 단위 ( 학생, 회원, 생산, 주문, 배송 )
객체 지향 프로그램과 절차 지향 프로그래밍
- ex) 출근 시나리오 과정
- 절차 지향 프로그래밍
- 시간이나 사건의 흐름에 따른 프로그래밍
기상 > 세면 > 아침식사 > 지하철을 탄다 > 요금지불 > 하차 > 회사 도착 - 객체 지향 프로그래밍
객체 지향 프로그램은 어떻게 구현되는가
- 객체를 정의
- 각 객체 제공하는 기능들을 구현
- 각 객체가 제공하는 기능 간의 소통(메세지)를 통해 객체간의 협력 구현
2. 생활 속에서 객체를 찾아 클래스로 구현해보기
ex) 학사 관리 시스템
- 학생클래스
public class Student {
int studentNumber; // 학번
String studentName; // 학생이름
int majorCode; // 전공코드
String majorName; // 전공
int grade; // 학년
}
객체 지향 프로그램을 할 때는
- 객체를 정의하고
- 각 객체의 속성을 멤버 변수로 역할을 메서드로 구현
- 각 객체간의 협력을 구현
클래스 코딩하기
- 클래스는 대문자로 시작하는것이 좋다
- java 파일 하나에 클래스는 여러개가 있을수 있지만, public 클래스는 하나이고, public 클래스와 .java파일의 일름은 동일함
- camel notation 방식으로 작명
3. 함수와 메서드
함수( Function )란
- 하나의 기능을 수행하는 일련의 코드
- 구현된 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨
- 함수로 구현된 하나의 기능은 여러곳에서 동일한 방식으로 호출되어 사용될 수 있음
함수 정의하기
- 함수는 이름, 매개변수, 반환 값, 함수 몸체로 구성됨
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);
System.out.println(total); // 30 출력
sayHello("안녕하세요"); // 안녕하세요 출력
total = calcSum();
System.out.println(total); // 5050 출력
}
}
함수 호출과 스택 메모리
- 스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리
- 함수의 수행이 끝나면 자동으로 반환되는 메모리
- main() 함수에서 사용할 메모리 공간이 생성됨
- main()에서 addNum() 함수 호출
- 스택에 함수가 사용할 메모리 공간이 생성됨 (n1, n2, result)
- addNum() 함수가 수행 후 종료되면 스택 공간은 자동으로 사라짐
메서드 ( Method )
- 객체의 기능을 구현하기 위해 클래스 내부에 생성되는 함수
- 멤버 함수라고도 함
- 메서드를 구현함으로써 객체의 기능이 구현 된다.
- 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는것이 좋다
ex) getStudentName(), getStudentNumber() ....
4. 객체의 속성은 멤버 변수로, 객체의 기능은 메소드로 구현된다.
학생 클래스를 정의하고 사용해본다
- 학생 클래스의 속성을 멤버 변수로 선언하고 메서드를 구현한다.
public class Student {
public int studentId;
public String studentName;
public String address;
public void showStudentInfo() {
System.out.println(studentId + "학번의 학생 이름은 " + studentName + " 이고, 주소는 " + address +" 입니다.");
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String name) {
studentName = name;
}
}
학생 클래스를 생성하여 생성된 객체(인스턴스)에 각각 다른 이름과 주소를 대입한다.
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();
studentLee.studentId = 12345;
studentLee.setStudentName("Lee");
studentLee.address = "서울특별시";
studentLee.showStudentInfo();
Student studentKim = new Student();
// 12345학번의 학생 이름은 Lee 이고, 주소는 서울특별시 입니다.
studentKim.studentId = 54321;
studentKim.setStudentName("Kim");
studentKim.address = "서울특별시";
studentKim.showStudentInfo();
// 54321학번의 학생 이름은 Kim 이고, 주소는 서울특별시 입니다.
}
}
반응형
'Java' 카테고리의 다른 글
Java 객체 지향 핵심 / 상속, 형 변환, 재정의(override), 다형성 (0) | 2022.11.17 |
---|---|
Java 객체지향 입문 / 배열, 객체 배열, 2차원 배열, ArrayList (0) | 2022.11.16 |
Java 객체지향 입문 / static 변수, static 매서드, singleton 패턴 (0) | 2022.11.16 |
Java 객체 지향 입문 / 접근 제어 지시자, 정보은닉, this, 객체간의 협력 (0) | 2022.11.09 |
Java 객체 지향 입문 / 인스턴스 생성과 힙 메모리, 생성자, 오버로딩, 참조 자료형 변수 (0) | 2022.11.08 |