[13일차] 01. 객체와 객체지향 프로그래밍 / 02. 생활 속에서 객체 찾아 클래스로 구현해 보기 / 03. 함수와 메서드

WOOJEON JANG·2022년 1월 8일
0

Part02. 객체지향 프로그래밍
ch 02. 객체지향 입문

01. 객체와 객체지향 프로그래밍 🔥

<객체(object)>

  • 의사나 행위가 미치는 대상(사전적 의미)
  • 구체적, 추상적 데이터의 단위(학생, 회원, 생산, 주문, 배송)


<객체 지향 프로그램과 절차 지향 프로그래밍>

  • 아침에 일어나 학교를 가는 과정을 예로 들자면 아래와 같다.

  • 절차 지향 프로그래밍 (예시)
    시간이나사건의 흐름에 따른 프로그래밍 :
    일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다 -> 요금을 지불한다 -> 학교에 도착

  • 객체 지향 프로그래밍 (예시)


<객체 지향 프로그램은 어떻게 구현하는가?>

  • 객체를 정의 하고
  • 각 객체가 제공하는 기능들을 구현하고
  • 각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 협력을 구현

오늘의 공부 소감(01.) :
??? 아직 전혀 감이 잡히지 않는다..







02. 생활 속에서 객체 찾아 클래스로 구현해 보기 🔫

<객체를 찾아 보자>

  • 온라인 쇼핑몰회원 로그인을 하고 여러 판매자 가 판매하고 있는 제품 중 하나를 골라 주문을 한다
  • 아침에 회사에 가는 길에 스타벅스에 들려서 아메리카노를 주문한다
  • 성적확인을 위해 학사관리시스템에 로그인하여 수강과목들의 성적을 확인한다



<클래스는 객체의 청사진(blueprint)입니다>

  • 객체의 속성은 클래스의 멤버변수(member variable)로 선언 함
  • 학생 클래스 예제는 아래와 같다

    (학생의 속성에 해당하는 것들을 데이터 타입에 맞게(학번 등은 정수형int로, 과목명 등은 문자이기 때문에 String으로 지정해 준 것)

  • 주문 클래스 예제

  • 회원 클래스 에제



<객체 지향 프로그래밍을 할 때는>

  • 객체를 정의 하고
  • 각 객체의 속성을 멤버변수(member variable)로 역할을 메서드로 구현한다
  • 각 객체간의 협력을 구현한다



<클래스 코딩하기>

  • 클래스는 대문자로 시작하는 것이 좋음
  • JAVA 파일 하나에 클래스는 여러 개가 있을 수 있지만, public 클래스는 하나이고, public 클래스와 .java 파일의 이름은 동일함
  • camel notation 방식으로 명명함(단어가 바뀌는 곳에서 대문자로 표기하는 것 _ ex. camelCaseNotation)

오늘의 공부 소감(02.) :
드디어 객체지향을 공부하게되는 날이 왔다... 개념 자체 부터 너무 재미있다







03. 함수와 메서드 🔮

<함수란?(function)>

  • 하나의 기능을 수행하는 일련의 코드
  • 구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 변환됨
  • 함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음




<함수 정의하기>

  • 함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨
int add(int num1, in num2) { //add가 이름, num1,num2가 매개 변수
	
    int result;
    result = num1 + num2;
    return result; //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);
	}
    // 반환(return)이 없는 문자 출력 함수
    
	public static int calcSum() {
		
		int sum = 0;
		int i;
		
		for(i = 0; i<=100; i++) {
			sum += i;
		}
		
		return sum;
	}
// 매개변수가 없는 1부터 100까지 더하는 함수 



	public static void main(String[] args) {
		
		int n1 = 10;
		int n2 = 20;
		
		int total = addNum(n1, n2);
        	System.out.println(total); //10+20을 더한 값을 total로 return받아서 출력
		
		sayHello("안녕하세요"); //바로 "안녕하세요" 출력
		int num = calcSum();
		
		System.out.println(num); //1~100까지 더한 수를 num으로 반환받아서 출력
	}
}



<함수 호출과 스택 메모리>

  • 스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리
  • 함수의 수행이 끝나면 자동으로 반환되는 메모리



<메서드(method)>

  • 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
  • 멤버 함수(member function)이라고도 함
  • 메서드를 구현함으로써 객체의 기능이 구현 됨
  • 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는 것이 좋음 ex.getStudentName();

오늘의 공부 소감(03.) :
이해가 잘 안되서 강의를 6번 정도 돌려봤다. 이해는 되지만 보지않고 작성할 수 있을까..? 객체지향 프로그래밍은 너무 재미있는 개념인 것 같다.

profile
back-end enginneer

0개의 댓글