의사나 행위가 미치는 대상
구체적, 추상적 데이터의 단위
액션,동작이 일어나는 액터
사담
컴퓨터는 전쟁 때문에 어마어마하게 발전
미사일 격추 프로그램을 만든다고 생각해보자
외부변수때문에 계산대로 되지않아서
컴퓨터 내부에 현실을 하나 더 만들자!
그래서 객체 지향이 생겨남.
C++ 어려워!
C++개발자 모아놓으니까
미사일맞고 다 죽음Java
더 쉬움
실생활 > 현실반영 기능이 모두 있음
빨리 배울수 있음!
개발자를 빨리 양성가능
학생, 밥, 학교, 버스
학생 클래스 === 객체(비슷한개념)
객체 안에 들어있는 변수 > 필드 or 멤버 변수 라고 한다.
클래스는 설계도(붕어빵 틀)
객체는 제품(붕어빵
하나의 기능을 수행하는 일련의 코드
함수는 호출하여 사용
여러곳에서 동일한 방식으로 호출되어 사용
정의(=구현)
호출(=사용)
클래스에는 필드( 멤버변수)만 있는게 아님
기능!객체에 속한 함수를 메소드라고 함.(종속적임)
멤버 함수
종속적이지않음
함수는 이름, 매개변수, 반환값, 함수몸체 로 구성
보통은 클래스 하나에 메소드나 함수는 한개만 있는게 정석!
중복 코드를 줄이고 코드 재사용
코드 모듈화해서 가독성 높음 프로그램 품질 향상
메소드 이름 작성
문자로 시작 후 캐멀 스타일
값 전달(call by value)과
참조에 의한 전달(call by reference)
주소를 참조하기 때문에 값에 직접적인 영향을 줌
메서드 시그니처: 메서드 이름, 매개변수의 개수, 매개변수의 타입과 순서를 의미
메서드 이름은 같지만 메서드 시그니쳐가 다를 경우 다른 메서드라 생각
이를 메서드 오버로딩 이라함.
메소드 내에서 자신을 호출하는 함수
Static : 다른 클래스에서 메소드를 실행할때 new를 안받고도 실행할 수 있게 해줌.
For(int a:i){
Syso"a+i");
}
소프트웨어 객체는 현실세계의 객체를 필드와 메서드로 모델링한것.
상태를 필드로 정의, 동작을 메서드로 정의
필드는 객체 내부에 선언된 변수.
메서드는 객체 내부에 정의된 동작
Object oriented programming
현실을 s/w로 설계
순서에 맞추어 단계적으로 실행하도록 명령어 나열
명령어의 순서와 흐름에 중점
작업예상가능 > 직관적, 규모가 작을때 프로그래밍과 이해하기가 용이
소프트웨어는 계산위주이므로 절차지향이 적합.
현실세계를 객체 단위로 프로그래밍.
객체는 필드와 메서드를 하나로 묶어서 표현
필드 = 데이터 = 멤버 변수
메서드 = 코드 = 멤버함수,동작,기능
객체와 객체끼리 상호작용함.
(정보 은닉) public 공용 private 사적
객체의 데이터, 동작을 하나로 묶고 실제 구현 내용을 외부에 감추는것
: 다른 방법으로 사용 할 수 있게 도와줌
상위객체를 상속받은 하위 객체가 상위 객체의 메서드와 필드를 사용
코드의 재사용성을 높일 수 있음. 유지보수시간 최소화