본문 바로가기

컴퓨터공부/Java

[java 자바공부]1급 객체, T, R, U, D 등의 알파벳 , 클래스의 인스턴스 , 람다

by Life & study 2023. 10. 24.
반응형

[java 자바공부]1급 객체,  T, R, U, D 등의 알파벳 , 클래스의 인스턴스 , 람다

1급 객체란 무엇인가?

1급 객체란 무엇인가?

 

1급 객체(first-class object)는 프로그래밍 언어 디자인에서 사용되는 개념으로, 다음과 같은 특성을 가진 객체를 말합니다:

변수에 할당될 수 있다.
데이터 구조(예: 배열, 리스트, 셋 등)의 요소로 저장될 수 있다.
함수 또는 메서드의 인자로 전달될 수 있다.
함수 또는 메서드에서 반환값으로 사용될 수 있다.
즉, 1급 객체란 프로그래밍 언어에서 일급 시민처럼 취급되는 객체를 의미합니다.

예를 들어, JavaScript에서 함수(function)는 1급 객체입니다. JavaScript의 함수는 변수에 할당할 수 있으며, 배열의 요소로 저장할 수 있고, 다른 함수의 인자로 전달하거나 반환값으로 사용할 수 있습니다.

 

 1급 객체란 프로그래밍 언어에서 일급 시민처럼 취급되는 객체를 의미합니다.

예를 들어, JavaScript에서 함수(function)는 1급 객체입니다. JavaScript의 함수는 변수에 할당할 수 있으며, 배열의 요소로 저장할 수 있고, 다른 함수의 인자로 전달하거나 반환값으로 사용할 수 있습니다.

 

// 변수에 할당
var myFunction = function() { console.log('Hello!'); };

// 배열 요소로 저장
var myArray = [function() { console.log('Hello!'); }, 1, 'string'];

// 다른 함수의 인자로 전달
function callAnotherFunction(callback) {
    callback();
}
callAnotherFunction(myFunction); // 'Hello!' 출력

// 반환값으로 사용
function returnFunction() {
    return function() { console.log('Hello!'); };
}
var anotherFunction = returnFunction();
anotherFunction(); // 'Hello!' 출력

 

1급 객체라 함은 

그 언어 내에서 해당 객체가 가장 기본적인 역할을 모두 담당하며 제약 없이 자유롭게 쓰일 수 있는 것을 의미합니다.

 

 

 

 

 

T, R, U, D 등의 알파벳

 

T는 "Type Parameter"를 나타냅니다. 제네릭 프로그래밍에서 T, E, K, V 등의 알파벳은 일반적으로 타입 파라미터를 나타내는 데 사용됩니다. 이들은 각각 Type, Element, Key, Value의 첫 글자를 따서 사용하는 관습입니다.

예를 들어,

T는 "Type"
E는 "Element" (주로 컬렉션에서 사용) (개별아이템)

(위 예제에서 ArrayList<E> 클래스는 <String> 또는 <Integer> 등으로 인스턴스화될 때, 해당 리스트가 저장하는 요소의 타입을)

( <E>는 "Element"를 의미하며, 이것은 어떠한 데이터 타입이든 될 수 있는 자리 표시자입니다. 이것은 제네릭 프로그래밍에서 코드 재사용성을 높이고 타입 안전성을 보장하는데 중요한 역할을 합니다.)


K는 "Key" (맵에서 키 값에 사용)
V는 "Value" (맵에서 값에 사용)
등으로 쓰입니다.

따라서, Build<T> stringBuild; 에서 'T'는 'Type'을 의미하며, 이것은 임의의 데이터 타입을 대신할 수 있는 플레이스홀더 역할을 합니다.

 

 

 

클래스의 인스턴스는 무엇인가?

 

클래스의 인스턴스란, 클래스를 기반으로 메모리에 할당된 객체를 말합니다. 이는 클래스의 구조와 속성을 가지며, 독립적인 상태와 행동을 가질 수 있습니다.

클래스는 사실상 객체를 생성하기 위한 틀이나 설계도와 같은 것입니다. 이 설계도에 따라 실제로 메모리에 생성된 객체가 바로 인스턴스입니다.

 

// Customer 클래스의 인스턴스 생성
Customer member = new Customer("John", 30);

 

member.getName()처럼 사용하여 이름을 가져올 수 있을 것입니다(물론 해당 메소드가 정의되어 있다면).

따라서 위 코드에서 "클래스의 인스턴스"란 new Customer("John", 30);로 만들어진 Customer 객체(member)를 의미합니다.

 

 

람다의 정리중 메모의 노트



1급객체란 무엇인가?
@service 
,sql

생각의 결론

 그러니까 여기서 @service에서 비지니스로직을 만들고 아니면 인터페이스에서 만들던가 하고 dao 와 sql 의 컬럼의 연결에서 데이터를 가공한다는것인데 여기서자바의 역할은 연결 성인가 ? 무엇을할수잇는것인가?



 

 

 

본문2

 

버튼을 눌럿을시에 대한 데이터의 순서

 

사용자(웹 브라우저)
     |
     | (HTTP 요청)
     v
@Controller (웹 애플리케이션 컨트롤러)
     |
     | (메소드 호출)
     v
@Service (서비스 인터페이스)
     |
     | (메소드 호출)
     v
@ServiceImpl (서비스 구현체)
     |
     | (메소드 호출, SQL 쿼리 실행 요청 등)
     v
@Repository/DAO + MyBatis (데이터베이스 접근 및 SQL 쿼리 실행) 


@Repository/DAO + MyBatis 
    |
    |  (결과 반환: 조회 결과, 작업 성공 여부 등)  
    v   
@ServiceImpl 
    |
    |  (결과 반환: 비즈니스 로직 처리 결과)  
    v   
@Service 
    |
    |  (결과 반환: 서비스 메소드의 리턴 값)  
    v   
@Controller 
   |
   |  (HTTP 응답 생성 및 전송: 웹 페이지나 API 응답 데이터 등)  
   v   
사용자(웹 브라우저)

 

결론

순환 역순환

순환

 

 

 비즈니스 로직 이란 무엇인가?

 

 

자바와 sql

비즈니스 로직은 도메인 지식을 코드로 변환한 것으로서, 예를 들어 유효성 검사(validation), 계산(computation), 조건 분기(decision making), 데이터 가공(data processing) 등이 포함됩니다. 예를 들어, 회원 가입 시 이메일 형식 검사나 비밀번호 복잡도 체크는 자바에서 처리되며, 결제 금액 계산 또한 자바에서 이루어집니다.
따라서 일반적으로 데이터베이스와 관련된 CRUD 연산은 MyBatis(SQL)가 담당하고 그 외 애플리케이션의 복잡한 비즈니스 규칙 및 연산들은 서비스 레벨에서 자바 코드가 담당하는 것이 좋습니다.

그러나 언제나 그렇듯 프로젝트와 요구 사항에 따라 이 구분이 다소 변경될 수 있습니다. 어떤 경우에는 특정 연산을 DBMS에서 처리하는 것이 더 효율적일 수 있으므로 상황에 따라 적절한 선택을 해야 합니다.

 

 

결론,

MyBatis는 SQL Mapper 프레임워크로, SQL 쿼리를 XML 파일에 작성하고, 자바 코드에서 XML 파일을 호출하여 SQL 쿼리를 실행합니다2. 이를 통해 개발자는 SQL 쿼리를 자바 코드와 분리하여 작성할 수 있습니다2.

비즈니스 로직은 데이터베이스와 상호작용하는 코드입니다. 이때, 데이터베이스와 상호작용하는 코드는 주로 DAO(Data Access Object)나 Repository 클래스에서 작성합니다1. DAO나 Repository 클래스에서는 MyBatis를 사용하여 데이터베이스와 상호작용하는 코드를 작성할 수 있습니다1.

따라서, 비즈니스 로직에서는 자바 코드로 작성하는 것이 좋습니다. 이는 자바가 객체 지향 프로그래밍 언어이기 때문입니다. 객체 지향 프로그래밍은 코드의 재사용성과 유지보수성을 높여주는 장점이 있습니다

 

 

반응형

댓글