개발자상식 <백엔드 개발자> (4)
[책리뷰 & Book review]
임포트 되어있는 클래스와 다른 클래스가 임포트 되어 연결되어 있는다는 것을 어떻게 알 수 있는가?
자바에서 클래스를 사용하려면 그 클래스가 정의된 패키지를 import로 선언해야 합니다.
이는 해당 클래스가 속한 패키지의 경로를 알려주는 역할을 합니다.
클래스를 사용하는 파일의 최상단에 보통 import 문을 작성하게 됩니다.
예를 들어, java.util.ArrayList를 사용하려면, 아래와 같이 import를 사용해야 합니다.
java
import java.util.ArrayList; // ArrayList 클래스를 import
public class MyClass {
public static void main(String[] args) {
ArrayList<String> myList = new ArrayList<>(); // ArrayList 클래스 사용
myList.add("Hello");
myList.add("World");
System.out.println(myList);
}
}
위 코드에서 import java.util.ArrayList;는 ArrayList 클래스가 java.util 패키지에 속해 있다는 것을 명시하고 있습니다.
이를 통해 ArrayList 클래스를 사용할 수 있게 됩니다.
특정 클래스가 어떤 클래스를 임포트 하고 있는지 알아내려면, 해당 클래스의 소스 코드를 확인하면 됩니다. 클래스 파일의 최상단에 import 문이 있을 것이고, 그것이 해당 클래스가 사용하고 있는 다른 클래스들을 나열하고 있습니다.
하지만, 클래스가 너무 많은 클래스를 임포트하고 있을 경우 이를 한눈에 파악하기 어려울 수 있습니다. 이럴 때는 IDE(Integrated Development Environment)의 도움을 받을 수 있습니다. 대부분의 현대 IDE들은 코드 내에서 특정 클래스를 마우스 오른쪽 클릭하면 그 클래스의 정의로 바로 이동하는 기능을 제공합니다. 이를 통해 어떤 클래스가 어떤 클래스와 연결되어 있는지 쉽게 알 수 있습니다.
자바에서 public과 private은 접근 제어자(access modifier)라고 부르는 키워드입니다.
자바에서 public과 private은 접근 제어자(access modifier)라고 부르는 키워드입니다.
이들은 클래스, 메서드, 변수 등에 선언되어 해당 요소가 어디서 접근될 수 있는지를 규정합니다.
public: 이 키워드가 붙은 클래스, 메서드, 변수는 어디서든 접근할 수 있습니다.
즉, 같은 패키지뿐 아니라 다른 패키지의 클래스에서도 접근이 가능합니다.
java
public class PublicClass {
public void publicMethod() {
System.out.println("This is a public method.");
}
}
위의 PublicClass 클래스와 publicMethod 메서드는 어디서든 접근 가능합니다.
private: 이 키워드가 붙은 클래스(중첩 클래스의 경우), 메서드, 변수는 오직 그것이 선언된 클래스 내부에서만 접근할 수 있습니다. 같은 패키지의 다른 클래스나 다른 패키지의 클래스에서는 접근할 수 없습니다.
java
public class PrivateMethodClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
}
위의 privateMethod 메서드는 PrivateMethodClass 클래스 내부에서만 호출할 수 있습니다.
따라서 같은 패키지나 다른 패키지의 다른 클래스에서는 이 메서드를 사용할 수 없습니다.
따라서, 같은 패키지에서 다른 클래스의 메서드를 호출하려면 그 메서드는 public이어야 합니다.
private 메서드는 해당 클래스 내부에서만 호출이 가능합니다.
이 외에도 protected (같은 패키지나 상속받은 클래스에서 접근 가능)와 기본 접근 제어자(선언된 클래스나 같은 패키지에서만 접근 가능)가 있습니다. 이들은 클래스나 메서드, 변수가 어디서 접근될 수 있는지를 더 세밀하게 조정하려는 목적으로 사용됩니다.
제목 3
private 메서드는 해당 클래스 내부에서만 직접 호출할 수 있습니다.
따라서 외부에서 private 메서드를 호출하려면 해당 클래스 내부에 public 메서드를 통한 간접 호출을 제공해야 합니다.
이러한 방법을 통해 private 메서드의 접근을 제한하면서도 필요한 경우 외부에서 사용할 수 있게 할 수 있습니다.
예를 들어 다음과 같은 클래스가 있다고 가정해 봅시다.
java
public class MyClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
}
외부에서 privateMethod를 호출하려면 다음과 같이 public 메서드를 통해 간접적으로 호출할 수 있습니다.
java
public class MyClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
public void publicMethod() {
privateMethod(); // private 메서드를 public 메서드 내부에서 호출
}
}
이렇게 하면 외부에서는 publicMethod를 통해 privateMethod를 간접적으로 호출할 수 있습니다.
java
public class TestClass {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.publicMethod(); // 이렇게 하면 privateMethod가 간접적으로 호출됨
}
}
이 방법은 private 메서드의 접근을 제한하면서도, 필요한 경우 해당 메서드를 외부에서 사용할 수 있게 하는 방법입니다.
주로 private 메서드의 동작을 캡슐화하거나, public 메서드가 private 메서드의 동작을 기반으로 추가적인 작업을 수행하는 경우에 사용됩니다.
privateMethod를 간접적으로 호출하는 방법
자바 코드와 이에 대한 설명을 함께 제공하겠습니다.
먼저, 다음과 같은 MyClass라는 클래스가 있다고 가정해 봅시다.
java
public class MyClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
public void publicMethod() {
privateMethod(); // private 메서드를 public 메서드 내부에서 호출
}
}
위의 MyClass 클래스는 privateMethod라는 프라이빗 메서드와 publicMethod라는 퍼블릭 메서드를 가지고 있습니다. privateMethod는 private로 선언되어 있기 때문에 MyClass 클래스 내부에서만 호출이 가능합니다.
하지만 publicMethod 내부에서 privateMethod를 호출하고 있습니다. 이렇게 되면, publicMethod는 외부에서 호출이 가능하므로, 외부에서 publicMethod를 호출하면 간접적으로 privateMethod가 실행되게 됩니다.
다음은 이를 활용하는 방법입니다.
java
public class TestClass {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.publicMethod(); // 이렇게 하면 privateMethod가 간접적으로 호출됨
}
}
위의 TestClass는 main 메서드 내에서 MyClass의 인스턴스를 생성하고, 이 인스턴스의 publicMethod를 호출하고 있습니다. 이렇게 되면, publicMethod 내부에서 privateMethod가 호출되므로, main 메서드를 실행하면 콘솔에 "This is a private method."라는 문구가 출력됩니다.
이처럼, 프라이빗 메서드는 직접적으로는 외부에서 호출할 수 없지만, 퍼블릭 메서드를 통해 간접적으로 호출하는 것이 가능합니다. 이를 통해 프라이빗 메서드의 내부 동작을 캡슐화하면서 필요에 따라 외부에서 사용할 수 있게 하는 방법을 제공합니다.
MVC 패턴과 3-Tier Architecture란?
MVC (Model-View-Controller) 패턴: 이 패턴은 사용자 인터페이스를 구현하는 데 흔히 사용되는 패턴으로, 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)의 세 부분으로 나눕니다.
Model: 데이터와 비즈니스 로직을 처리합니다.
View: 사용자에게 보이는 부분을 처리합니다.
Controller: 사용자의 요청을 받아 모델과 뷰를 업데이트합니다.
이 패턴은 데이터와 사용자 인터페이스의 분리를 가능하게 하여, 각각을 독립적으로 개발하고 수정할 수 있게 합니다.
3-Tier Architecture: 이 패턴은 애플리케이션을 세 부분, 즉, 표현(Presentation), 로직(Application Logic), 데이터(Data)로 나눕니다.
Presentation Tier: 사용자 인터페이스와 사용자 상호작용을 처리합니다.
Application Logic Tier: 비즈니스 로직을 처리합니다. 데이터를 조작하고 처리하는 역할을 합니다.
Data Tier: 데이터베이스나 파일 시스템 등의 데이터를 저장하고 관리합니다.
이 아키텍처는 각 계층을 물리적으로 분리할 수 있어 확장성과 유지 보수성이 좋습니다.
DAO (Data Access Object) 패턴: 이 패턴은 데이터베이스의 CRUD(Create, Read, Update, Delete) 연산을 캡슐화합니다. 이 패턴을 사용하면 데이터 액세스 로직을 분리하여 코드의 재사용성과 유지 보수성을 향상할 수 있습니다.
DTO (Data Transfer Object) 패턴: 이 패턴은 데이터를 객체로 캡슐화하여 계층 간 데이터 교환을 단순화하는 데 사용됩니다. DTO는 일반적으로 로직을 포함하지 않고, 단순히 데이터를 전송하는 역할만 합니다.
각 패턴은 특정 상황에 따라 적합한 경우가 있으므로, 애플리케이션의 요구 사항과 목표를 고려하여 적절한 패턴을 선택해야 합니다.
DTO , DAO , Entity 란 무엇인가?
DTO (Data Transfer Object) 패턴
DTO는 간단한 POJO (Plain Old Java Object)이며, 여러 계층 간에 데이터를 전달하기 위해 사용됩니다.
주로 로직을 포함하지 않고, 데이터를 저장하고 전달하는 역할만 합니다.
java
public class UserDTO {
private String name;
private String email;
// getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
위의 UserDTO는 이름과 이메일을 가진 사용자 데이터를 전달하는 데 사용될 수 있습니다.
DAO (Data Access Object) 패턴
DAO는 데이터베이스의 CRUD(Create, Read, Update, Delete) 연산을 캡슐화합니다.
이 패턴을 사용하면 데이터 액세스 로직을 분리하여 코드의 재사용성과 유지 보수성을 향상할 수 있습니다.
java
public class UserDAO {
public UserDTO getUserById(int id) {
// 데이터베이스에서 id에 해당하는 사용자를 찾아 UserDTO로 반환
}
public void saveUser(UserDTO user) {
// 데이터베이스에 user 정보를 저장
}
// 기타 CRUD 메서드
}
위의 UserDAO는 사용자 정보를 조회하거나 저장하는 데 사용될 수 있습니다.
Entity
Entity는 데이터베이스 테이블의 행을 나타내는 클래스입니다. JPA(Entity Framework)와 같은 ORM(Object-Relational Mapping) 도구를 사용하여 데이터베이스와 객체 지향 프로그래밍 사이의 '다리' 역할을 합니다.
java
@Entity
public class UserEntity {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String email;
// getters and setters
}
위의 UserEntity는 사용자를 나타내는 데이터베이스 테이블과 매핑됩니다. @Entity 어노테이션은 이 클래스가 엔티티임을 나타냅니다. @Id와 @GeneratedValue는 id 필드가 테이블의 기본 키임을 나타내며, 자동 생성된다는 것을 나타냅니다. @Column은 해당 필드가 데이터베이스 테이블의 칼럼임을 나타냅니다.
이러한 패턴들은 각각의 역할에 따라 적절하게 사용되어야 합니다.
DTO는 계층 간의 데이터 전달을 담당하며, DAO는 데이터베이스 액세스 로직을 캡슐화하고, Entity는 데이터베이스 테이블을 객체 지향적으로 다루는 데 사용됩니다.
#개발자취업 #개발자기초 #개발자 #개발자분야 #개발자분류 #개발자종류 #it개발자 #서버개발자 #개발자성장 #신입개발자 #ios개발자 #개발자노트북 #개발자 되는 법 #개발 #앱개발 #웹개발 #개발분야 #it개발 #개발공부 #코딩상식 #개발공부 #개발초보
#개발자취업 #개발자면접 #개발자채용 #백엔드개발자 #백엔드개발자 #백엔드개발자취업 #백엔드개발 #프런트엔드개발자 #개발자상담 #백엔드 #개발자 #앱개발자 #웹개발자 #개발자팁 #앱개발자 #백엔드취업 #백엔드공부 #백엔드강의 #백엔드독학
#전산직면접 #면접 #면접팁 #면접관 #공공기관전산직면접 #공사면접 #면접질문 #면접할 말 #면접준비 #면접준비 #면접답변 #면접질문 #면접기출 #전화면접 #면접복장 #면접답변 #면접꿀팁 #모의면접 #면접후기 #롯데면접 #면접후기 #임원면접 #최종면접 #면접꿀팁
'컴퓨터공부 > 책리뷰 & book review' 카테고리의 다른 글
개발자상식 <백엔드 개발자> (6)[책리뷰 & Book review] (0) | 2024.01.15 |
---|---|
개발자상식 <백엔드 개발자> (5)[책리뷰 & Book review] (0) | 2024.01.15 |
개발자상식 <백엔드 개발자> (3)[책리뷰 & Book review] (1) | 2024.01.15 |
개발자상식 <백엔드 개발자> (2)[책리뷰 & Book review] (2) | 2024.01.13 |
댓글