728x90

CS 188

24.08.28 CS, C++

CS전략(Strategy) 패턴전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴이다. 여기서 전략이란 일종의 알고리즘이 될 수도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다.즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다.전략 패턴 구조전략 알고리즘 객체들알고리즘, 행위, 동작을 객체로 정의한 구현체전략 인터페이스모든 전략 구현체에 대한 공용 인터페이스컨텍스트(Context)알고리즘을 실행할 때마다 해당 알고리즘과 연결된 전략 객체의 메소드를 호출한다.클라이언트특..

언어/C++ 2024.08.28

24.08.27 CS, C++

CS객체 지향 설계의 5가지 원칙 - S.O.L.I.DSOLID 원칙이란 객체 지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙을 말한다.SRP(Single Responsibility Principle) 단일 책임 원칙OCP(Open Closed Principle) 개방 폐쇄 원칙LSP(Listov Substitution Principle) 리스코프 치환 원칙ISP(Interface Segregation Principle) 인터페이스 분리 원칙DIP(Dependency Inversion Principle) 의존 역전 원칙SOLID 설계 원칙은 OOP의 4가지 특징(추상화, 상속, 다형성, 캡슐화)와 더불어, 객체 지향 프로그래밍의 단골 질문 중 하나이다.좋은 소프트웨어란 변화에 대응을 잘 하는 것을..

24.08.26 CS, C++

24.0CSISP(인터페이스 분리 원칙)ISP 원칙이란 범용적인 인터페이스 보다는 클라이언트(사용자)가 실제로 사용하는 Interface를 만들어야 한다는 의미로, 인터페이스를 사용에 맞게 끔 각기 분리해야 한다는 설계 원칙이라고 보면 된다.만약 인터페이스의 추상 메서드들을 범용적으로 이것저것 구현한다면, 그 인터페이스를 상속받은 클래스는 자신이 사용하지 않는 인터페이스마저 억지로 구현해야 하는 상황이 올 수도 있다. 또한 사용하지도 않는 인터페이스의 추상 메소드가 변경된다면 클래스에서도 수정이 필요하게 된다.즉, 인터페이스 분리 원칙이란 인터페이스를 잘게 분리함으로써, 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공하는 것이다.인터페이스 분리 원칙은 마치 단일 책임 원칙과 비슷하게 보이는데, S..

24.08.23 CS

CSSRP(단일 책임 원칙)단일 책임 원칙은 객체는 단 하나의 책임만 가져야 한다는 원칙을 말한다. 여기서 책임이라는 의미는 하나의 기능 담당으로 보면 된다. 즉, 하나의 클래스는 하나의 기능만을 담당하여 하나의 책임을 수행하는데 집중되어 있어야 한다는 의미이다.하나의 클래스에 여러 기능(책임)을 넣느냐, 따로따로 클래스를 분리하여 기능(책임)을 분산시키느냐 설계는 프로그램의 유지보수와 밀접한 관련이 있다.단일 책임 원칙 준수 유무에 따른 가장 큰 특징 기준 척도는, 기능 변경(수정)이 일어났을때의 파급 효과이다.한 객체에 책임이 많아질수록 클래스 내부에서 서로 다른 역할을 수행하는 코드끼리 강하게 결합될 가능성이 높아지게 되어 시스템이 복잡해질 수 있다. 그래서 그 객체가 하는 기능에 변경사항이 생기면..

24.08.22 CS, C++

CS상속과 합성프로그래밍을 할 때 가장 신경 써야 할 것 중 하나가 바로 코드 중복을 제거하여 재사용 함으로써 변경, 확장을 용이하게 만드는 것이다.상속과 합성은 객체지향 프로그램에서 가장 널리 사용되는 코드 재사용 기법이다.상속(Inheritance) 합성(Composition)부모 클래스와 자식 클래스 사이의 의존성은 컴파일 타임에 해결두 객체 사이의 의존성은 런타임에 해결is-a 관계has-a 관계부모 클래스의 구현에 의존 결합도가 높다구현에 의존하지 않는다.내부에 포함되는 객체의 구현이 아닌 인터페이스에 의존한다. 클래스 사이의 정적인 관계객체 사이의 동적인 관계부모 클래스 안에 구현된 코드 자체를 물려 받아 재사용포함되는 객체의 퍼블릭 인터페이스를 재사용상속(Inheritance) 이란상속은 객..

24.08.20 CS, 디자인 패턴

CS객체 지향(OOP)객체 지향 프로그래밍 이란, 많은 객체(Object)들이 모여서 상호 협력하면서 데이터를 처리하는 방식의 프로그래밍 설계 방법을 말한다.프로그램을 묶음 단위로 잘게 쪼개서, 추후에 가져다 쓰기 편하게 만들어 놓은 프로그램 방식이다. 이처럼 레고 블럭을 조립하듯 컴포넌트를 유연하고 변경이 용이하기 때문에, 현업에서 대규모 소프트웨어 개발에 많이 사용된다.대표적으로 많이 알려진 Java언어를 포함하여 Ruby Python, C++, Objective-C, C#, Kotlin등이 모두 객체지향 요소를 가진 언어이다.객체 지향 프로그래밍의 반대 개념으로는, 절차적 프로그래밍(Procedure Programming) 이라는 것이 있다. 함수(function)을 이용해서 정리 정돈하는 프로그래..

24.08.19 네트워크

네트워크FTP/ SFTPFTP(File Transfer Protocol)파일을 전송하는 통신 규약이다.원격에 있는 서버에 파일을 주고 받을 때 사용하는 인터넷 통신 규약인데 내 컴퓨터에 있는 파일을 계정을 제공하는 서버로 파일을 서로 이동시키는 것을 말한다. 여기에 보안이 추가된 SFTP가 있다.기본 포트는 21이지만 바꿔서 사용하는 경우도 있다. 예전에는 사용했지만 지금은 보안이 좋지 않아서 실무에서는 사용하지 않는다.SFTPssh의 파일 전송 버전이라고 생각하면 된다.일반적인 FTP와 달리 PC와 서버간의 데이터 전송을 암호화하기 때문에 해킹이나 보안상의 문제점을 방지, 안전한 호스팅 서비스를 이용할 수 있다.텔넷(Telecommunication network)인터넷을 통하여 원격지의 호스트 컴퓨터에..

24.08.16 CS, C#, DEV

C#Async/AwaitC#에서 비동기 프로그래밍을 쉽게 할 수 있게 해주는 키워드이다. 이 두 키워드는 복잡한 비동기 코드를 간결하게 작성할 수 있게 해주며, 동기 코드처럼 읽기 쉽고 유지 보수하기 좋은 코드를 작성할 수 있게 도와준다.asyncasync 키워드는 메서드, 람다식, 또는 익명 메서드에 사용된다.이 키워드는 해당 메서드가 비동기적으로 실행될 것임을 컴파일러에게 알려준다.async 메서드는 반드시 await 키워드를 포함하지 않아도 되지만, 포함하는 것이 일반적이다.awaitawait는 비동기 작업이 완료될 때까지 메서드의 실행을 일시 중지하고, 작업이 완료되면 계속 실행한다.await 키워드는 비동기 작업이 끝날 대까지 호출된 메서드를 기다렸다가, 그 이후의 코드를 계속 실행한다.중요한 ..

컴파일/트랜스파일/인터프리터

컴파일/트랜스파일/인터프리터컴파일(Compile)한 언어로 작성된 소스 코드를 다른 언어로 변환하는 것이 컴파일이다.C언어를 기계어로 옮기는 것, Java를 Bytecode로 옮기는 것 모두 이 정의에 따르면 Compile에 해당한다. 심지어 TypeScript를 JavaScript로 옮기는 것 역시 이 범주안에 속한다고 할 수 있기도 하다. (엄밀히 말하면 트랜스파일링이다.)고수준의 언어를 바이트 단위의 기계어로 변환해야 컴파일이라고 말하는 것이 아니다. 컴파일은 한 언어로 작성된 코드를 다른 언어로 옮기는 일 자체를 통칭한다고 보면 된다.트랜스파일(Transpile)한 언어로 작성된 소스 코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 것이 트랜스파일이다.Transpile은 Compile의 ..

Computer/CS 2024.08.16

24.08.14 CS, Dev

24.08.14 CS, DevCS멀티 프로세스 VS 멀티 스레드멀티 프로세스와 멀티 스레드는 한 어플리케이션에 대한 처리방식이라고 보면 된다. 단순히 프로그램을 여러개 띄워놓는 것이 멀티 프로세스가 아니라 이 둘은 언제 어느때에 어떤 방식으로 처리하느냐에 따라 다른 것으로 이해해야 한다.멀티 프로세스멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술을 말한다. 보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러개의 프로세스를 생성하는 것이다.멀티 프로세스 내부를 보면, 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성함으로서 다중 프로세스를 구성하는 구조이다. 한 프로세스는 실행되는 도중 프..

728x90