2022/02/11 객체지향 입문

김석진·2022년 2월 12일
0

객체와 객체 지향 프로그래밍

객체(Object)

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

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

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

    예) C++,C#,Python,JavaScript등등

객체 지향 프로그래밍은 어떻게 구현?

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

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

객체 찾기

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

클래스는 객체의 청사진(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 방식으로 명명

함수와 메서드

함수란(function)

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

함수 정의하기

함수는 이름, 매개 변수, 반환 값 ,함수 몸체(body)로 구성

함수 호출과 스택 메모리

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

메서드(method)

  • 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수

    함수와 메서드의 차이

    함수는 어디 속해있는거 X 단독 모듈,
    메서드는 클래스안에 있고 클래스내 전역변수를 이용해서 처리를한다.

  • 멤버 함수 (member function)이라고도 함

  • 메서드를 구현함으로써 객체의 기능이 구현 됨

  • 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는것이 좋음

  • ex) getStudentName()

인스턴스 생성과 힙메모리(heap memory)

인스턴스(Instance)

  • 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드상태
  • 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨
  • new 키워드를 이용해 인스턴스 생성

힙 메모리

  • 생성된 인스턴스는 동적 메모리(heap memory)에 할당됨
  • c나 c++ 언어에서는 사용한 동적 메모리를 프로그래머가 해체 시켜야함
  • 자바에서 Gabage Collector가 주기 적으로 사용하지 않는 메모리를 수거
  • 하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각가 다른 메모리 주소를 가지게됨

용어 정리

객체: 객체 지향 프로그램의 대상, 생성된 인스턴스
클래스: 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
멤버 변수: 클래스의 속성, 특성
메서드: 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값: 생성된 인스턴스의 메모리 주소 값

profile
주니어 개발자 되고싶어요

0개의 댓글