*프로그래밍 이라고 하면
프로그램을 짜는 작업이라 고 생각하는데 프로그램은 프로그램을 짜는 작업이 아니다.
프로그램을 설계하는 작업이다!!
만약 문제사항이 있을 때
(프로젝트를 어떻게 실행시킬것인가?)
절차지향
문제를 해결하는 절차를 중요하게 생각하는 방법
->필요한 것만 만들어짐(때문에 순서실행에 맞춰 만들다보니 막누르면 어긋날 수 있는 상황이 생김)
객체 지향 프로그래밍
->객체가 무슨일을 하느냐의 중점이다보니 필요없는 기능이라도 객체라 생각하고 넣을 수 있다.
캡슐화
정보은닉
상속: 코드를 재활용! (코드가 짧아 질 수 있다)
다형성
하나의 이름으로 많은 상황에 대처하는 법
->인터페이스라는 것을 다양하게 활용하는 것
사람과 고양이, 강아지가 인터페이스를하기 위한 구현 ->speak() 를 줬더니 강아지는 멍멍이라하고 고양이는 야옹
1.반드시 오버라이딩 하게 하는것
2.상호데이터를 주고받기위함
객체(Object): 상태와 동작을 가지고 있다 (변수와 메소드)
자동차
상태 색상 : 빨강 현재 기어: 2 현재 속도 : 80km/h
|
추상화: 색상, 현재기어, 현재속도라고 말한 순간 추상화 ->다른 사람은 color 이런식으로 할 수 있지만 내가 이렇게 정한 걸 추상화라고 한다
모델링: 1+1=2다 , 정답이 정해져있는 것
객체와 클래스를 구분할 수 있어야한다
Message
객체와 객체가 값을 받거나, 직접조작하거나, 함수를 통해 조작을 하거나 하는 작업들
클래스 : 변수와 함수를 만들어 둔걸 작성하는 것
클래스로부터 만들어지는 객체를 인스턴스라고 한다. object
클래스에서 찍어낸걸 객체라고한다 (붕어빵틀과 붕어빵)
<객체는 몇개인가?>
Car car1 = new CarA();
Car car2 = car1;
car1 = new CarB();
Car car3 = car2;
car1 = car2;
car1 = car3 = car2 = CarA
car1 = CarB
CarB는 자동으로 가비지컬렉션에 들어간다.
String클래스는 new를 안해도 만들 수 있다는 특이한점이 있다. 그랬구낭
객체지향에는 정해진 룰이 참 많다.
그렇지 않으면 C나 다를바 없으니까...