728x90

Study/TIL(Today I Learned) 270

24.08.29 CS, C++

CS템플릿 메소드(Template Method)템플릿 메서드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화 하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작을 다르게 구현하는 패턴이다.즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들어두고 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 상위의 메소드 실행 동작 순서는 고정하면서 세부 실행 내용은 다양화 될 수 있는 경우에 사용된다.템플릿 메소드 패턴은 상속이라는 기술을 극대화하여, 알고리즘의 뼈대를 맞추는 것에 초점을 둔다. 이미 수많은 프레임워크에서 많은 부분에 템플릿 메소드 패턴 코드가 우리도 모르게 적용되어 있다.템플릿 메서드 패턴 구조AbstractClass(추상 클래스)템플릿 메소드를 구현하고, 템플릿 메소..

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.21 CS

CS객체의 결합도 & 응집도소프트웨어의 모듈 독립성프로그래밍이란 문제를 정의하고 하나씩 해결해나가는 과정을 말한다. 문제가 복잡하고 큰 문제라면, 일반적으로 문제를 작은 부분으로 쪼개어서 하나씩 풀어나가게 될 것인데, 이 떄 문제를 작은 부분으로 쪼개나가는 것을 모듈화라고 한다.모듈은 소프트웨어를 각 기능별로 나누어진 소스 단위를 말한다. 독립적으로 컴파일 가능한 프로그램 혹은 하나의 함수나 클래스도 모듈이 된다.보통 좋은 소프트웨어 일수록 모듈의 독립성이 높다고 한다. 좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누게 되는데, 각각의 모듈은 주어진 기능만을 독립적으로 수행하기 때문에 재사용성이 높고 코드의 이해/수정이 용이하기 때문이다. 예를 들어 해당 모듈을 수정하더라도 다른 모듈에 끼치는 영향이 ..

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 키워드는 비동기 작업이 끝날 대까지 호출된 메서드를 기다렸다가, 그 이후의 코드를 계속 실행한다.중요한 ..

24.08.14 CS, Dev

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

728x90