
자바 공부를 하면서 참고한 서적입니다.
명품자바에센셜(생능출판사, 황기태), 이것이 자바다(한빛미디어, 신용권)
자바(Java)의 특징
자바는 완벽한 객체지향언어입니다. 이러한 자바의 특징에 대해 알아봅시다.
가장 큰 특징 3가지는 다음과 같습니다.
상속(Inheritance)
다형성(Pholymorphism)
캡슐화(Encapsulation)
이러한 특징들은 나중에 따로 파트를 만들어 올릴 예정입니다.
-
인터페이스 와 합성, 상속과 폴리모피즘
-
추상화 를 얼마나 잘 구현 하는지에 따라 시스템 품질이 결정된다.
-
캡슐화 를 잘 해야 프로그램의 재사용성과 유지보수성이 좋아진다.
-
클래스 단위로 프로그램을 확장하기 쉬워, 재사용 할 수 있다.
즉, 객체지향언어의 특징은 재사용성과 유지보수성이 높은 프로그램을 만들수 있다.
단, 그러기 위해서는 객체지향프로그래밍 특성을 잘 살려 프로그램을 짜야한다.
나중에 좀 더 프로그램을 잘 짜고 싶을경우, 객체지향 개발 방법에서는 소프트웨어를 효과적으로 개발할 수 있는 여러가지 방법이 있는데 아래와 같습니다.
디자인패턴(DesignPatter)과 리팩토링(Refactoring)이 대표적입니다.
-
Java는 플랫폼 독립적이나 JVM은 각 운영체제에 맞게 작동 되기때문에 플랫폼 종속적이다.
-
플랫폼 독립적 JVM(Java Virtual Machine)만 있으면 어디서든 실행가능 WORA(Write Once Run Anywhere)
-
컴퓨터는 Java/c++과 같이 고급언어를 바로 이해하지 못하므로 컴파일을 통해 기계어로 변환해야 한다.
-
Java는 c/c++과 같이 한번에 컴파일이 불가능하다.
-
Java는 인터프리터라는 방식을 이용해서 한줄 컴파일이 되므로 속도가 느림. 그러나 JIT로 속도 개선.
-
javac(자바 컴파일러)로 변환시킨 기계어(0, 1로 이루어진 언어)를 바이트 코드라 한다.
-
유연성, 확장성, 유지보수성
-
상속과 다형성(Polymorphism, 폴리모피즘)
-
캡슐화(encapsulation)와 은닉
-
객체의 유일성과 책임
-
가비지 컬렉션 : 사용하지 않는 메모리는 자동으로 회수된다.
-
자바는 메모리를 할당 받는 기능만 있고, 메모리를 반환하는 기능은 없다. → 프로그래밍 부담이 줄어든다.
-
자바소스 확장자 : .java / 컴파일된 클래스 파일의 확장자 : .class
OOP
OOP(Object Oriented Programming)는 객체지향 프로그래밍이란 뜻입니다.
자바에서 객체(Object)는 프로그램의 기본 단위 입니다.
객체는 식별가능한 실체적이거나 추상적인 대상을 말합니다.
예를들어, 자동차, 사람, 냉장고, 계산기, 동물 등이 있습니다.
OOP는 Bottom-up방식으로 객체를 먼저만들고 조립하여 완성하는 방식입니다.
객체지향언어의 목적
개발자가 새로운 기능의 추가 및 기존 기능의 확장을 손쉽게 할 수 있는 프로그램을 만들도록 지원하는 것.
즉, 유연성(Flexibility), 확장성(Extendability), 유지보수성(Maintenance) 이 좋은 소프트웨어를 만드는 것.
객체지향방식이란?
객체지향방식은 이름에도 나와있듯이 함수(Function)가 아닌 객체(Object)가 프로그램의 기본 단위이다.
메소드(Method) 와 속성(Attribute) 이 객체안으로 캡슐화(Encapsulation) 됩니다.
즉, 메소드 + 속성 → 클래스로 정의 → 객체 생성
각 객체들은 서로 다른 책임(각자의 역할)을 맡는다. → 객체의 유일성과 책임
절차지향방식과 달리 객체들은 내부적으로 상태정보를 유지한다.
Message
메시지란 객체간에 전달되는 명령 단위 입니다.
객체는 자발적으로 행위를 수행하지 않으므로 객체가 특정 기능을 수행하게 하려면 메시지가 전달되어야 한다.
각 객체들이 상호작용을 하면서, 특정한 기능을 수행하기 위해서 메소드를 사용합니다.
객체가 다른 객체의 기능을 이용하는 것이 메소드 호출입니다.
ReturnName = ObjectName.MethodName(arg1, arg2 …..);
Object Modeling
필드와 메소드를 속성과 동작이라고 표현합니다.
예를들어, 동물이 있고 동물에는 강아지와, 고양이가 있습니다.
그러면 부모클래스로 동물을 생성하고 자식클래스로 강아지와 고양이를 생성 할 것입니다.
또한 강아지와 고양이의 속성에는 이름, 나이, 성별이 있겠고, 동작으로는 짖다라는 메소드가 있을 것입니다.
이렇게 현실 세계의 객체를 소프트웨어 객체로 설계하는것이 객체 모델링(Obejct Modeling)이라고 합니다.
즉, 현실 세계 객체의 속성과 동작을 → 소프트웨어 필드와 메소드로 정의




近期评论