프로그래밍 31

객체 지향 프로그래밍 원칙

객체지향 5원칙(SOLID).객체지향에서 꼭 지켜야 할 5개의 원칙! SRP 단일책임원칙Single Responsibility Principle 모든 클래스는 단 하나의 책임을 가져야 한다는 원칙이다. 다르게 말하면 클래스를 수정할 이유가 오직 하나여야만 한다는 뜻이기도 하다. OCP : 개방-폐쇄 원칙Open Closed Principle모든 소프트웨어 구성 요소는 확장에 대해서는 개방되어있지만, 수정에 대해서는 폐쇄되어있다는 원칙이다. LSP : 리스코프 치환 법칙Liskov Substitusion Principle자식 클래스는 언제나 자신의 부모 클래스를 교체할 수 있다는 원칙이다. 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다는 것. ISP : 인터페이스 분리 원..

접근 제한자

main() 메소드를 가지지 않는 대부분의 클래스는 외부 클래스에서 이용할 목적으로 설계된 라이브러리 클래스이다. 라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근 할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다. 객체 생성을 막기위해 생성자를 호출하지 못하게 하거나 객체의 특정 데이터를 보호하기 위해 해당 필드에 접근하지 못하도록 막아야 한다. 접근제한자는 4가지의 종류가 있고, 제한자에 따른 적용 대상과 접근이 불가능한 클래스는 아래의 표와 같다.접근제한 적용할 내용 접근할 수 없는 클래스 public 클래스, 필드, 생성자,메소드 없음 protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클..

메소드 오버로딩(overloading) vs 메소드 오버라이딩(overriding)

메소드 오버로딩(Method Overloading)같은 이름을 가진 메소드를 여러개 정의하는 것. (메소드 이름은 같고, 매개변수의 선언이 다른 메소드를 만드는 것)인자는 다르지만 기능은 같은 메소드들을 하나의 메소드 이름으로 접근한다는 개념.생성자, 기타 다른 메소드에 적용가능사용이유 : 하나의 메소드 이름에 하나의 형채로만 메소드가 정의 된다면, 인자가 다르지만 같은 기능을 하는 메소드들을 각기 다른 이름으로 설정해야 한다. 사용자는 같은 기능의 메소드라도 인자의 형태에 따라 일일이 메소드의 이름을 기억해야한다.이러한 이유로 메소드의 이름은 그대로 사용하면서 다양한 형태의 메소드를 정의 하면, 어떠한 형태의 인자를 사용더라도 해당 기능을 맡은 메소드 이름만 기억하면 된다. ※ 오버로딩의 주의사항메소드..

객체지향에서의 다형성

다형성 정의같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줌 전제 부모클래스의 참조변수로 자식클래스의 객체를 참조할 수 있음(자식클래스의 객체에는 부모클래스로 만든 객체를 포함하니까) 부모클래스의 참조변수로 자식클래스 객체를 참조했을때는 부모클래스에 존재하는 멤버에만 접근이 가능함부모클래스의 참조변수로 자식클래스의 객체를 참조해서 부모클래스에 존재하는 멤버함수 호출 시 자식클래스에서 해당 메소드를 오버라이딩 했다면 실제 호출되는 함수는 자식에서 오버라이딩한 메소드가 호출됨(동적 바인딩)

상속 개념파악하기!

부모 클래스(슈퍼 클래스) 와 자식 클래스(서브 클래스) 의 관계를 파악하기 위한 프로그램 부모 클래스class Parent{int data = 100;public void print(){System.out.println("부모임");}} 자식 클래스class Child extends Parent{int data = 200; public void print(){super.print();System.out.println("자식임");System.out.println("data : " + data);System.out.println("this.data : " +this.data);System.out.println("super.data : " +super.data);}} 메인 함수public class Par..

개발자 커뮤니티 모음

‘삶의 진솔한 얘기와 기술이 함께하는 커뮤니티’ ‘개발자를 행복하게 해주는 커뮤니티’ ’항상 개발자 편에 서서 환경을 바꾸려 노력하는 커뮤니티’ ‘14년의 정보가 녹아있는 사이트’ ’일 방문자 20,000명의 사이트’ okky.kr 입니다. 데브피아는 50만 회원의 개발자 커뮤니티를 기반으로 소프트웨어 개발 및 유통, 교육/취업사업, 솔루션 기반의 컨설팅 및 SI사업, 온라인 광고/홍보사업 등을 주요사업으로 하며, 국내 최대의 소프트웨어 개발 지식 커뮤니티인 DEVPIA, JAVANURI 사이트 운영으로 글로벌 소프트웨어 포탈 서비스의 비전을 실현해 가는 창조적 신지식기업 입니다.

프로그래밍 2016.03.29

정적 변수 (static variable)

정적변수 (static variable)정의모든 객체를 통틀어서 하나만 있는 변수멤버변수와 다르게 객체를 생성하지 않아도, 아무리 많은 객체가 생성되어도 하나만 존재하는 변수 정적변수의 용도1. 모든 객체가 하나의 데이터를 공유하기 위해2. 클래스내에서 공통적으로 쓰이는 (객체 마다 같은 값) 변수를 사용하기 위해서 ▶ 메모리 낭비를 방지함

변수의 종류 와 사용영역

지역변수메소드(함수) 내에서 생성하는 변수.메소드(함수) 종료시 사라짐.스택영역에 생성됨. 멤버변수해당 클래스가 객체화 될때마다 각 객체 내에서 생성됨해당 객채가 소멸될때 사라짐= 필드변수= 인스턴트변수 정적변수클래스 내부에서 static 키워드를 포함해서 정의프로그램이 실행될때 생성되서 프로그램이 종료될 때 사라짐= 클래스 변수

클래스의 메모리 구조 및 참조관계

Point 클래스와 Circle 클래스를 이용하여 원의 반지름(Radius), 중심값(Center)을 입력, 출력하는 프로그램 // 메인함수public class CircleTest { public static void main(String[] args) { Point p1 = new Point();Point p2 = new Point(2,3);Circle c1 = new Circle();c1.setRadius(20);System.out.println(p1);System.out.println(p2);System.out.println(c1);c1.setCenter(p2);System.out.println(c1);p2.setX(12);p2.setY(17);System.out.println(c1);} } pu..